ggplot2 快速入门:基础图形作法

R语言ggplot2包之坐标轴 引言我们还可以对图形中的坐标轴进行处理,包括x、y轴对换、设定坐标轴范围、刻度线修改与去除等等。要想对图形玩得转,坐标轴处理精通不可或缺。坐标轴对换我们使用coord_flip()函数来对换坐标轴。library(ggplot2) library(gcookbook) ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() ggplo 阅读详情

ggplot2 快速入门:基础图形作法

一、实验介绍

1.1 实验内容

从课程《R 语言快速入门》 中,我们已经了解过 Hadley Wickham 的 tidyverse 生态链,知道了完整的数据分析大约包括以下流程:

 

 Source: Hadley Wickham, R for Data Science, 2016. 可视化(Visualise)不仅是数据探索(Explore)中至关重要的一个环节,而且充满趣味和成就感(所见即所得)。我们既可以用图形来验证猜想,也可以从图形中发现不为人知的秘密。因此,从基础的可视化工具开始接触数据科学通常是一个不错的选择。本课程即将带你感受 R 最受欢迎的作图工具包 ggplot2 的魅力,为你的数据科学之路奠定一个良好的开端。 通过本课程的学习,你将

  • 理解 ggplot2 基本思想和图形语法
  • 使用 ggplot2 画出优雅的散点图、折线图、柱状图、箱线图等常用图形

1.2 实验知识点

  • ggplot2
  • 附加变量
  • 几何对象
  • 统计变换
  • 坐标系

1.3 实验环境

  • R 3.4.1
  • Xfce 终端

1.4 适合人群

本课程难度较小,适合已经掌握 R 基本语法,想了解 ggplot2 作图方法和入门数据科学的朋友。

二、实验内容

2.1 ggplot2

R 语言包含多种作图工具,每种工具自有一套逻辑体系,ggplot2 则凭借它的优雅与灵活受到大部分数据科学家的喜爱。 在 2.1 节中,你将理解 ggplot2 作图的基本思想,拥有一套完整的语法模版,从模版中你将得知一个图形的要素有哪些。此外,如果你只是想迅速获得对数据的直观感受,我们还将介绍简化的作图方法。

2.1.1 基本思想

我们先进入一个实例,一边应用 ggplot2 中的函数,一边探索它的基本思想。 打开桌面上的 Xfce 终端,从云端下载实验所需数据。car.csv 文件中保存了 2011 年中国各地区每百户家用汽车保有量数据。

$ wget http://labfile.oss.aliyuncs.com/courses/978/car.csv

进入 R 环境 

$ sudo R

 

ggplot2 是 tidyverse 生态链的核心 package,因为实验环境中已经安装有 tidyverse package,所以我们可以直接加载它。如果你是在 RStudio 中操作,记得先用 install.packages() 命令安装 tidyverse。

> library(tidyverse)

 

上图中,虚线以上部分是 tidyverse 包含的核心 package,虚线以下部分是 tidyverse 和其它 package 冲突的函数,使用这些函数时需要指明来源。接下来我们使用 tidyverse 中的 read_csv() 函数读取实验数据,并保存在 da 中。

> da <- read_csv('car.csv')

 

值得注意的是,read_csv() 的结果是一个 tibble 对象,tibble 本质上也是 data frame 的一种,行为观测值,列为变量,但和 R 中常见的 data.frame 不同,它有许多良好的性质。比如,我们想查看 da 变量的结构或者前几行,不需要再用 str() 或 head() 函数,而是直接运行 da 就可以了。tidyverse 中大部分数据都是 tibble 结构。

# 查看 da
> da

 

 从上图中我们可以看到,da 是一个 31 行、6 列的 tibble 对象,它的前 10 行被呈现出来。6 个变量依次为省份(或直辖市)、地区(E 为东部、M 为中部、NE 为东北、W 为西部)、家用汽车每百户平均保有量、人均GDP、城镇人口比重、交通工具消费价格指数,变量类型前两个为 char、后四个为 double。关键信息只需一个小小的命令就能被呈现出来,这就是 tibble 人性化的地方。 至此,准备工作已经做好,下面我们就来探索 ggplot2的基本思想。 假设我们想观察各省市家用汽车平均保有量和人均 GDP 之间有什么关系,我们可以作出 car 随 GDP 变动的散点图。 Step 1:

ggplot(data = da)

 

 只定义数据参数data,此时 ggplot() 生成一张空白的画布。

Step 2:

ggplot(data = da, mapping = aes(x = GDP, y = car))

 

 除 data 外,还定义了映射参数 mapping,将 GDP 映射到 x 轴,car 映射到 y 轴,此时图形有了坐标轴。

Step 3:

ggplot(data = da, mapping = aes(x = GDP, y = car)) + 
  geom_point()

 

 除数据和映射参数外,还使用 geom_point() 添加了几何对象,此时图中出现了散点,这些点的分布表示平均汽车保有量和人均 GDP 之间似乎存在正相关关系。 从以上三个分解的步骤中,我们可以体会到 ggplot2 作图的逻辑,即它需要使用一定的几何对象(点、线等)来表示整理好的数据,并且在数据和图像属性(如 x、y轴,颜色,形状等)之间建立一定的映射。

Step 3 中的命令还可以简写为

# 默认 ggplot 的第一个参数为 data,第二个参数为 mapping,aes的第一个值为 x 轴,第二个值为 y轴。
ggplot(da, aes(GDP, car)) +
  geom_point()

或改写为

# mapping 的参数设定仅在 geom_point() 中使用
ggplot(data = da) +
  geom_point(mapping = aes(x = GDP, y = car))

2.1.2 语法模版

从 2.1.1 节的尝试中,我们可以总结出 ggplot2 的一套语法模版:

ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

通过后续的学习,你将得到更加完整的语法模版:

ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(
  mapping = aes(<MAPPINGS>),
  stat = <STAT>,
  positon = <POSITION>,
  ) + 
  <COORDINATE_FUNCTION> + 
  <FACET_FUNCTION>

2.1.3 图形要素

从完整的语法模版中,我们得知 ggplot2 图形有以下要素:

  • 数据
  • 几何对象
  • 属性映射
  • 统计转换
  • 位置调整
  • 坐标系
  • 块面结构

你将在接下来的实验中陆续接触到这些概念。

2.1.4 快速图形作法

如果我们只是想用最少的代码迅速获得对数据的直观感受,可以使用 qplot() 函数。

qplot(GDP, car, data = da)

 

 尽管 qplot() 看起来更简洁,而且理论上可以实现所有 ggplot() 的功能,但是随着图形变得更加复杂,ggplot() 将是一个更好的选择。

2.2 附加变量

从 2.1 节的散点图中,我们似乎找到了 car 和 GDP 的一种正相关关系,这是两个变量之间的关系。 但是,考虑一下,如果我们想往二维图形中添加第三个变量,比如我们想知道各个样本点分别属于什么地区,或者想看不同地区的 car 和 GDP 之间的关系,应该怎么做呢? 两个坐标轴已经被固定了,第三个变量只能通过其它途径反映出来。接下来我们介绍两种途径,一种是属性映射,即把第三个变量作为某种属性赋给图形,另一种是块面图,即按照第三个变量进行分组,在不同组中呈现前两个变量之间的关系。属性映射和块面图都体现了一种分组的思想,只是前者是隐性的,后者是显性的。

2.2.1 属性映射

我们将第三个变量 region 赋值给 color,geom_point() 就会自动把观测值按照 region 分组,每组用不同颜色的点在画布上标出。

ggplot(data = da) +
  geom_point(mapping = aes(x = GDP, y = car, color = region))

 

 从上图中可以看到,东部省份盘踞在右上角,人均 GDP 和平均汽车保有量都很高,中西部省份则蜷缩在左下角,这体现了我国地区间经济发展的不平衡,共同富裕的发展路线只实现了前面一半,我国仍然处于社会主义初级阶段。 我们把省份名称标注在图上,看看能不能得出更有意思的结论。

ggplot(da, aes(GDP, car)) +
  geom_point(aes(color = region)) +
  geom_text(aes(label = province), check_overlap = TRUE)

 

 check_overlap = TRUE 省略了某些省份的名称,保证文本不会有重叠。 从图中来看,最右上角的点毫无疑问是北京。天津和上海两个城市比较特别,拥有很高的人均 GDP,家用汽车平均保有量却相对较低。对这个现象,我们可以做出许多猜想:影响汽车保有量的是否有其它更重要的因素?人均 GDP 是名义值(未经价格调整),也许这两个城市的物价水平很高,导致实际 GDP 较低。或者,这两个城市的其它交通工具较为发达、交通堵塞严重需摇号购车,家用汽车不是人们的首选出行工具…… 左上角的西藏和云南也十分引人注目,它们拥有较低的人均 GDP,家用汽车保有量却相对较高,我们可以猜想,这两个省份地广人稀,家用汽车是必要的出行工具…… 图形启发我们进行了这些猜想,它们不一定正确,需要我们进一步设计研究,但我们已经可以感受到数据可视化的力量。

除了 color,geom_point() 还有其它一些属性,比如点的形状(shape)、透明度(alpha)、大小(size)等。

ggplot(data = da) +
  geom_point(mapping = aes(x = GDP, y = car, shape = region))

 

 你可以使用 ?geom_point 命令查看帮助文档中的 Aesthetics,获取更多属性。

2.2.2 块面图

另一种增加变量的方法是块面图,我们使用 facet_wrap() 将观测值按照 region 分组,就可以看到不同地区的 car 和 GDP 之间的关系了。

ggplot(data = da) + 
  geom_point(mapping = aes(x = GDP, y = car)) + 
  facet_wrap(~ region, nrow = 2)

 除了 facet_wrap() 以外,ggplot2 中还有 facet_grid() 函数可以画块面图。你可以在帮助文档中看它们有什么不同。

2.3 几何对象

至今我们接触到的 ggplot2 中的几何对象有点和文本,除了这两个以外较为常用的还有线。下面我们分别来看散点图和折线图。

2.3.1 散点图

上面实验我们画的大多数都是散点图,因此无需赘述,但有种情形值得引起注意。 如果我们面临的是大样本,看看会发生什么。

# mpg 是 tidyverse 中一个内置的数据集,共 234 行,11列
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = cty))

 

 数一数会发现,图中点的个数小于 234,这叫做 “overplotting” 问题,有些点被临近的点覆盖掉,而且所有点看起来分布得十分均匀。 如果我们想获得更贴近现实(数据)的散点图,可以设置 position = 'jitter'。

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = cty), position = 'jitter')

 

2.3.2 拟合曲线

使用 geom_smooth 获得一条拟合观测值的曲线:

ggplot(data = da) +
  geom_smooth(mapping = aes(x = GDP, y = car))

 

在图中同时呈现散点和拟合的曲线,并且令 se = FALSE 去掉曲线的置信区间:

ggplot(data = da) +
  geom_point(mapping = aes(x = GDP, y = car)) +
  geom_smooth(mapping = aes(x = GDP, y = car), se = FALSE)

 

令 method = 'lm' 获得拟合的直线

ggplot(data = da) +
  geom_point(mapping = aes(x = GDP, y = car)) +
  geom_smooth(mapping = aes(x = GDP, y = car), se = FALSE, method = 'lm')

 

2.3.3 折线图

使用 geom_line() 画折线图:

ggplot(data = da) +
  geom_line(mapping = aes(x = GDP, y = car))

 

 这样的图看起来没有任何意义。事实上,在时间序列数据的可视化时使用 geom_line() 会比较合适。 economics 也是 tidyverse 的内置数据集,我们画出失业率随日期变动的折线图:

ggplot(data = economics) +
  geom_line(mapping = aes(x = date, y = unemploy/pop))

 

 

2.3.4 图层叠加

在前面的实验中,你已经接触了一些图层叠加的操作,比如带有拟合曲线的散点图、标注文本的散点图等。 图层叠加是 ggplot2 中一个非常重要的理念,正是它让 ggplot2 变得灵活,让我们可以不拘泥于固定的图例设置,自有地创造出想要的图形。 下面我们再来看一个例子,这个例子让点和曲线的颜色都根据 region 进行了分组:

ggplot(da, aes(GDP, car, color = region)) +
  geom_point() +
  geom_smooth(se = FALSE)

 

 需要说明的是,为了简化实验,我们用的是 2011 年的截面数据,因此样本量较小,分组后每组包含的样本就更少了,这样拟合出来的曲线毫无说服力(因此你会看到 There were 11 warnings 的警告信息)。在正式研究中,我们也许会采用面板数据(panel data)扩大样本容量。 为了更加熟练地掌握图层叠加操作,请尝试画出课后练习中的图形。

2.4 统计变换

无论是散点图还是折线图,我们都能在图形上看出原始数据来,统计变换则不同,它需要先进行一定的统计操作,再把结果反映在图形上。

2.4.1 柱状图

对观测值进行分类统计,我们可以用 geom_bar() 画出柱状图。柱状图只需要指定 x 坐标(离散的分类变量),另一个坐标为 count(计数)。

ggplot(da) +
  geom_bar(mapping = aes(x = region))

 

 

有时候我们拿到的并不是原始数据,而是已经分类计数好的数据,这时候应该怎么办呢? 假设 demo 是我们拿到的数据,通过令 stat = 'identity',可以画出和上面一样的柱状图来。

demo <- tribble(
  ~region, ~freq,
  "E", 10, 
  "M", 6, 
  "W", 12, 
  "NE", 3
)

ggplot(demo) +
  geom_bar(mapping = aes(x = region, y = freq), stat = 'identity')

2.4.2 直方图

假设我们想统计的变量不是离散的,而是一个连续变量,这时候就可以用 geom_histogram() 画直方图。

ggplot(da, aes(GDP)) +
  geom_histogram(binwidth = 0.5)

 

注意设置合适的 binwidth 很重要,你需要根据不同的数据尝试多个 binwidth,选择一个最合适的。 除了直方图外,我们也可以用 geom_freqpoly() 画频率折线图,它与直方图的功能基本一致。

ggplot(da, aes(GDP)) +
  geom_freqpoly(binwidth = 0.5)

 

 

2.4.3 箱线图

箱线图很受统计学家喜爱,因为它以尽可能简单的方式直观地反映了许多数据特征。下图展现了从数据的实际分布到箱线图的过程。 

 Source: Hadley Wickham, R for Data Science, 2016. 我们使用 geom_boxplot() 画箱线图:

ggplot(da, aes(region, GDP)) +
  geom_boxplot()

 

 

2.5 坐标系

2.5.1 坐标标签

我们可以使用 xlab()、ylab() 函数为坐标轴添加标签:

ggplot(da, aes(GDP, car)) +
  geom_point() +
  xlab('Per Capita GDP') +
  ylab('Car Ownership (%)')

 

 

如果想去掉坐标轴标签,可使用 xlab(NULL)、ylab(NULL):

ggplot(da, aes(GDP, car)) +
  geom_point() +
  xlab(NULL) +
  ylab(NULL)

 

 

2.5.2 坐标范围

如果我们只想看人均 GDP 在 2 至 4 之间,平均汽车保有量在 10 至 20 之间的省份,可以使用 xlim()、ylim() 函数限定坐标轴范围:

ggplot(da, aes(GDP, car)) +
  geom_point() +
  xlim(2, 4) +
  ylim(10,20) +
  geom_text(aes(label = province), check_overlap = TRUE)

 

 

2.5.3 交换坐标和极坐标

如果我们想交换横纵坐标,可以使用 coord_flip() 函数。特别是当我们在画柱形图或箱线图,横坐标刻度标识很长时,可以交换横纵坐标,这样文字就不会挤在一起。 我们还可以使用 coord_polar() 将笛卡尔坐标系转化为极坐标系。

bar <- ggplot(da, aes(region)) +
  geom_bar(mapping = aes(fill = region), show.legend = FALSE, width = 1) +
  xlab(NULL) +
  ylab(NULL)

bar + coord_flip()
bar + coord_polar()  

 

三、课后练习

请尝试画出如下图形(将代码和截图保存在实验报告中):

1. 

2. 

 

3. 

4. 

 

 

四、总结

本实验介绍了 ggplot2 作图的基本思想和语法模版,通过实例展示了如何使用 ggplot2 画出优雅的散点图、折线图、柱形图、直方图、箱线图等基础图形,对其中蕴含的映射理念和图层思想做了详细的讲述。

 

ggplot2入门大全(从菜鸟到高手) 在开始ggplot2的学习之前,可以先看下我之前的一篇博客,关于快速作图——qplot 在本章你将学习1、ggplot2中的mpg数据集2、ggplot图像的三个基本构成:数据、图形属性和几何对象3、如何将变量映射到图形属性中4、如何指定不同的几何对象绘制各种各样的图形No1、在图中添加平滑曲线No2、箱线图和扰动点图No3、直方图和频数多边形No4、条形图No5、时间序列中的折线图和路径图5、如何修改坐标轴6、图像文件的其他处理方式,如保存至硬盘 1、ggplot2中的mpg数据集 第一步当然是加载ggp 阅读详情

相关推荐

快速学习ggplot2

R语言里面一个比较重要的绘图包——ggplot2,是由Hadley Wickham于2005年创建,于2012年四月进行了重大更新,作者目前的工作是重写代码,简化语法,方便用户开发和使用。ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离,是按图层作图,有利于结构化思维,同时它保有命令式作图的调整函数,使其更具灵活性,绘制出来的图形美观,同时避免繁琐细节。 ggplo

王亨的博客 2万+

R语言中ggplot的一些命令行总结

#前面的变成语言不是很规范,略看 #用ggplot作散点图 qplot(carat,price,data=diamonds)#演示数据集diamonds,作散点图,carat为横坐标,prince为纵坐标 qplot(log(carat),log(price),data=diamonds)#由散点图发现二者有关系,于是对数化 qplot(carat,xyz,data=diamonds)#横纵坐标...

the_marvellous_yolk的博客 2946

R_ggplot2基础(一)

作者:李誉辉  四川大学在读研究生 往期精彩: R_插值_拟合_回归_样条R_circlize包_和弦图(一)R_circlize包_和弦图(二)1 ggplot2特点采...

R语言中文社区 7629

ggplot2:数据分析与图形艺术 学习笔记06---第六章 标度、坐标轴和图例

标度(scale) 控制着数据到图形属性的映射# 也为我们提供了读图时所使用的工具:坐标轴和图例# 没有标度,就没有将数据转化为图形属性的途径# 执行标度的过程分为三步# 变换(transformation)# 训练(training)# 映射(mapping)# 具体将在6.2节中阐述# 关于默认标度以及修改它们的方法,详见6.3# 标度可以粗略地分为四类# 位置标度# 颜色标度# 手动离散型标度# 同一型标度# 常用选项和主要使用方法在6.4节。

weixin_43240090的博客 495

ggplot2_可视化_速成

作者:Li_Yuhui 四川大学研究生在读 本文是R,ggplot2包学习的笔记,总结了大量优秀前辈的工作,对ggplot2进行结构性总结归纳,能够让新手快速上手,事实上,笔者是将其作为字典用的,忘记了,就翻一翻。 看完本文后,如果还是对ggplot2不清楚,欢迎来打脸。 文章目录作者:Li_Yuhui 四川大学研究生在读本文是R,ggplot2包学习的笔记,总结了大量优秀前辈的工作,对ggplo...

weixin_43528109的博客 4653

玩转数据可视化之R语言ggplot2:(一)ggplot2实现箱线图、小提琴图、直方图等图形(快速入门)

玩转R语言ggplot2数据可视化 本系列主要介绍R语言ggplot2的使用 参考资料: ggplot2: Elegant Graphics for Data Analysis 文章目录玩转R语言ggplot2数据可视化1.使用案例数据 ggplot2是R语言数据可视化中的重要库之一。本章介绍如何使用ggplot()实现重要的基本图形。 1.使用案例数据 本章中,我们使用ggplot2中的自带数据集mpg, ...

阿里云专家博主、数据科学领域优质创作者、统计er在读 1万+

R语言数据可视化教程(ggplot2)_坐标轴设置

# 8.坐标轴# 8.1交换x轴和y轴# 使用coord_flip()来翻转坐标轴library(ggplot2)ggplot(PlantGrowth,aes(x=group,y=weight))+geom_boxplot()ggplot(PlantGrowth,aes(x=group,y=weight))+geom_boxplot()+coord_flip()# 如果x变量是一个因子型变量,则排...

小哲的博客 5万+

玩转数据可视化之R语言ggplot2:(三)ggplot2实现将多张图放在一起,包括并排和插图绘制(快速入门)

玩转R语言ggplot2数据可视化 小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生。本系列主要介绍R语言ggplot2的使用 参考资料: ggplot2: Elegant Graphics for Data Analysis 文章目录玩转R语言ggplot2数据可视化3.将多张图形放在一起:包括并排绘制和插图3.1 并排绘图3.3.1 调整布局3.1.2 修改子图3.1.3 增加注释3.2 将多个图互相叠加在一个图中 3.将多张图形放在一起:包括并排绘制和插图 ggplot2默认的语法都

阿里云专家博主、数据科学领域优质创作者、统计er在读 1万+

ggplot2:坐标轴或legend的label长度

1. 示例 clusterProfiler包用于富集分析和可视化是非常好用的,语法简洁而统一。 但是使用clusterProfiler包进行富集分析并绘图有时会遇到一个情况:一个富集分析的Terms的长度太长,会导致图片的轴标题或者legend很长,就会压缩了主绘图区域的显示。 一个示意图如下图所示,其实此图中的GO Terms长度相对是可以接受,实际情况下可能会遇到非常长的GO Terms,导致整个图的比例非常失调。 如果可以按照一定的长度折叠过长的GO Terms的话,那么这个问题就能得到解决了。 li

XIAOFEI@IDO 6497

玩转数据可视化之R语言ggplot2:(四)单一基础几何图形绘制

玩转数据可视化之R语言ggplot2 小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生。本系列主要介绍R语言ggplot2的使用 参考资料: ggplot2: Elegant Graphics for Data Analysis 文章目录玩转数据可视化之R语言ggplot24. 玩转数据可视化之ggplot2:单一几何图形绘制 4. 玩转数据可视化之ggplot2:单一几何图形绘制 这些几何图形是ggplot2的基本组成部分。可以用于构造更复杂的几何体。也是ggplot最基础的图形 这些几

阿里云专家博主、数据科学领域优质创作者、统计er在读 1万+

R可视化02|ggplot2-ggplot2快速绘图

本文介绍如何使用ggplot2快速绘制常用图形。

qq_21478261的博客 649

ggplot2 | ggplot2作图语法入门

ggplot2是R语言中最流行的绘图工具包,其风格与基础绘图系统差别很大,且彼此的函数也不能兼容:通过前面的推文介绍可以看出,基础绘图系统主要是通过一个主函数配合多个辅助函数来完成绘图,各...

R语言学堂 2000

ggplot2数据分析与图形艺术源代码精析

ggplot2是R语言中最受欢迎的绘图包之一,它赋予了数据分析师一种表达数据视觉故事的强大工具。该包由Hadley Wickham于2005年开发,其设计理念基于Leland Wilkinson的《格状图形系统》一书,提供了一种用代码表达图形结构的方法论。格状图形系统(Grammar of Graphics)是由Leland Wilkinson提出的一套图形设计理论,它提供了一种结构化的方式来描述和构建图形。

weixin_42511832的博客 931

ggplot2-图形语法

ggplot2 图形语法 ggplot2 是一个功能强大且灵活的 R 包,由 Hadley Wickham 编写,它可以生成优雅而实用的图形。ggplot2中 的 gg 表示图形语法(grammar of graphic),这是一个通过使用“语法”来绘图的图形概念。ggplot2 主张模块间的协调与分工,整个 ggplot2 的语法框架,主要包括数据绘图部分与美化部分。ggplot2 图形语法的...

qq_25055921的博客 2617

【银河麒麟服务器】银河麒麟V10 SP3高级服务器操作系统网卡配置完全指南:图形界面、Network、NetworkManager、IP 地址、路由与端口聚合详解

本文系统介绍了银河麒麟V10SP4服务器操作系统的网络配置方法,涵盖图形界面、NetworkManager、nmcli命令行等多种配置方式。重点讲解了IP地址设置、路由管理以及端口聚合(Bonding)的实现,包括传统配置文件、nmcli和nmtui三种Bonding配置方案。文章对比了NetworkManager与传统network服务的区别,并提供了常见网络问题的排查建议。通过多种配置方法的详细说明,帮助用户掌握银河麒麟服务器系统的网络管理技能,构建稳定可靠的网络环境。

YHLCCY的博客 5361

Keil MDK编译错误#541解决方案与ARM_Compiler包解析

在嵌入式开发中,编译器工具链的依赖管理是确保项目顺利构建的关键环节。以Keil MDK为例,其软件包依赖机制通过组件化设计实现功能解耦,其中ARM_Compiler包专门处理系统IO重定向等编译器扩展功能。这种架构既提升了模块复用性,也带来了版本兼容性挑战。当出现'Error #541: component missing'报错时,通常是由于中间件组件(如文件系统)在新版本中显式依赖了ARM_Compiler包。开发者需要通过Pack Installer安装该包,并在Run-Time Environment

weixin_32129187的博客 363

基于R的ggplot2使用指南整理(一)——柱状图画法(含代码)

可视化第一期:在R平台使用ggplot2欢迎查询ggplot2使用指南什么是ggplot2?基本结构图形类别geom_function坐标系coord_function分面facet_function标度函数scale_function各类图形作法柱状图总结 欢迎查询ggplot2使用指南 你好! 这篇文章大致会讲一些ggplot2的大致用法,包含了各类图形,如折线图、柱状图、箱型图等等的画法。其中会包含一些代码知识,比如形状、颜色和与数据对应的解释。内容会处于不断完善的过程中,欢迎各位提出建议! 什么是g

weixin_45532357的博客 2万+

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

R ggplot2

ggplot2 分段添加拟合函数,只需要在aex中添加colour字段。 运行结果:

qq_38607066的博客 4786

【Unity】Unity性能分析解决方案——UPR

由Unity中国团队提供的一套性能优化解决方案,其是一系列性能工具的集合,并可将收集的数据进行可视化。

Davidorzs的博客 1008

MACS2软件进行Peak calling

MACS2可以检出ChIP-Seq,ATAC-seq 以及 MeRIP-seq (RNA甲基化测序) 等富集的序列。peaks calling 有不同的方法,MACS2是最常用的call peaks工具。 MACS全称Model-based Analysis of ChIP-Seq,最初的设计是用来鉴定转录因子的结合位点,但是它也可以用于其他类型的富集方式测序。usage: macs2 [-h] [--version] {callpeak,bdgpeakcall,bdgbroadca

qq_27390023的博客 3789

7个ggplot2高效可视化技巧:从入门到专业的数据图形化指南

**ggplot2数据可视化**已成为R语言数据分析的标准工具,但许多开发者在从基础图表到专业级可视化的过渡中常常遇到瓶颈。本文将分享7个核心技巧,帮助您掌握ggplot2的**图形语法**精髓,创建既美观又实用的数据图表。 ## 为什么选择ggplot2?图形语法的独特优势 ggplot2基于**图形语法**理论,将图表分解为数据、映射、几何对象、坐标系、分面和主题六个核心组件。这种模块化设

gitblog_00446的博客 940

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 108

ggplot2作图详解1:入门函数qplot

ggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创造出任何有助于解决你所遇到问题的图形。一点也不谦虚。H.W.还说了另外一句话,“学习ggplot2你得忘记一些东西”,所以也有人说ggplot2是作图软件中的太极功。有点高深。 那好吧,我就怀着无比崇敬的心情来学一学这太极图法。先安装软件包: i

R语言与生物信息学 2万+

C#实战YOLO26物体检测:从ONNX模型转换到工业级部署全复盘

本文介绍了在C#上位机中集成YOLO26模型实现工业产线零件检测的实战方案。针对工业场景对实时性(单帧推理≤100ms)、轻量化和易部署的需求,选择YOLO26模型相比YOLOv8在推理速度提升30%且模型体积更小。文章详细拆解了从模型转换(PyTorch转ONNX)、C#推理引擎封装到部署优化的全流程,重点解决了ONNX兼容性、坐标偏移、GPU降级等工业落地中的典型问题。通过解耦设计、性能优化和异常处理机制,最终在工控机(i5-8500+GTX1650)上实现60ms的单帧推理速度,为工业检测项目提供了可

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1325

PCL 提取两片点云的非重叠部分【2025最新版】

PCL 提取两片点云的非重叠部分。博客长期更新,本文最近一次更新时间为:2025年9月1日。

点云侠的博客 36万+
上一篇: C++ 开发 Web 服务框架
下一篇: Spark机器学习--运用逻辑回归分析银行营销数据
git1314
博客等级 码龄9年 282粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值