R语言ggplot2做簇状柱形图并添加误差线的一个完整示例

R语言ggplot2做簇状柱形图并添加误差线的一个完整示例,第1张

原始数据存储在一个excel文件里,这个excel文件里有三个子表格,每一个子表格的数据如下:

总的数据格式

现在的需要是做如下的图

比如这里我新建了一个子表格sheet4,数据最终的格式如下

这里用到的是标准误

这里新学到一个知识点是,柱子默认是不贴底的,如果要贴底使用函数 scale_y_continuous(expand = expansion(mult = c(0,01)))

mult对应的两个值一个是控制下面,一个是控制上面,贴底就设置为0 就可以了

小明的数据分析笔记本

https://wwwrdocumentationorg/packages/customLayout/versions/020

https://mpweixinqqcom/s/zbp8pOQcNB4XBBF5SCg5GA

customLayout用于拼图特别方便,尤其是仪表盘布局

支持R内置的base绘图对象,ggplot2对象(与grid结合 )

Hide

”library(ggplot2)library(customLayout)

通过设置简单的数字矩阵以及对应的宽高比,可以非常方便的设置出来数字拼图

关键函数:

mat数字矩阵必须从1开始,且必须连续

其它拼图包没有的功能,非常好用

跟合并矩阵类似。分为行合并和列合并

这个功能也是其它包没有的,非常有用

关键函数:

参数lay表示大画布,参数newlay表示要嵌套进去的小画布,field表示指定要嵌套的区域编号

关键函数:

cowplot是一个ggplot2包的简单补充,意味着其可以为ggplot2提供出版物级的主题等。

更重要的是,这个包可以组合多个”ggplot2”绘制的图为一个图,并且为每个图加上例如A,B,C等标签,

这在具体的出版物上通常是要求的。 语法结构与ggplot类似,将ggplot2图作为一个对象置于 ggdraw() 中

表达式:

draw_plot(plot, x = 0, y = 0, width = 1, height = 1, scale = 1)

draw_text(text, x = 05, y = 05, size = 14, hjust = 05, vjust = 05,)

draw_plot_label(label, x = 0, y = 1, hjust = -05, vjust = 15, size = 16, fontface = "bold", family = NULL, colour = NULL, )

参数解释:

grid中文翻译为网格,可将其解释为画布分割,通过设定相应的参数,从而可以任意的摆放图形

常用函数:

语法:

参数解释:

layout参数

综合例子

子母图,主要是形成局部放大的效果,既可以从整体上对比,又兼顾特别小的数据组,或特别密的数据点可以查看,而没有必要单独做2张图

<pre style="box-sizing: border-box; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 13px; white-space: pre-wrap; display: block; padding: 95px; margin: 0px 0px 10px; line-height: 142857; color: rgb(51, 51, 51); word-break: break-all; overflow-wrap: break-word !important; background-color: white; border: 1px solid rgb(204, 204, 204); border-radius: 4px; max-width: 100%; font-variant-numeric: normal; font-variant-east-asian: normal; letter-spacing: 0544px; text-align: justify; widows: 1; overflow: auto;">## png

蝴蝶图

主要函数:

语法:

参数解释:

把绘图对象添加到列表总,并把该列表传递给 gridarrange() 函数中的grobs参数

子母图

grid包可以画字母图

安装gridExtra包后,ggplot2中多了一个 ggplotGrob( )函数,可以创建grob对象参数

R 有几种用于制作图形的系统,但 ggplot2 是最优雅和最通用的系统之一。与大多数其他图形包不同,ggplot2 具有基于图形语法的底层语法,它允许您通过组合独立组件来组合图形。如果想要更加了解ggplot2,请阅读 ggplot2: Elegant Graphics for Data Analysis ,可以从 https://ggplot2-bookorg/getting-startedhtml 学习本书

所有的图都由数据data,想要可视化的信息,映射mapping(即数据变量如何映射到美学属性的描述)组成

1 图层(layers) 是几何元素和统计变换的集合。几何对象,简称 geoms ,代表你在图中实际看到的东西:点、线、多边形等等。 统计转换,简称 stats ,总结数据:例如,装箱和计数观察,以创建一个直方图,或拟合一个线性模型。

2 Scales 将数据空间中的值映射到美学空间中的值。这包括颜色、形状和大小的使用。Scale还绘制图例和轴,这使得从图中读取原始数据值成为可能(反向映射)。

3 坐标(coords) 或坐标系统描述如何将数据坐标映射到图形的平面。它还提供了轴和网格线来帮助读取图形。我们通常使用笛卡尔坐标系,但也可以使用其他一些坐标系,包括极坐标和地图投影。

4 刻面(facet) 指定如何拆分数据子集并将其显示为小倍数。这也被称为条件反射或网格/格子。

5 theme 控制更精细的显示点,如字体大小和背景颜色。

ggplot2有许多参数,可根据需求自行选取,具体参数详情可见 https://ggplot2tidyverseorg/reference/indexhtml

基础绘图:由 ggplot(data,aes(x,y))+geom_ 开始,至少包含这三个组件,可以通过"+"不断的添加layers, scales, coords和facets。

Geoms :几何对象,通常,您将使用geom_函数创建层,以下为常用的图形:

geom_bar() :直方图,条形图

geom_boxplot() :box图

geom_density() :平滑密度估计曲线

geom_dotplot() :点图

geom_point() :点图

geom_violin() :小提琴图

aes(),颜色、大小、形状和其他审美属性

要向绘图添加其他变量,我们可以使用其他美学,如颜色、形状和大小。

按照属性定义

它们的工作方式与 x 和 y 相同,aes():

aes(displ, hwy, colour = class) #按照某个属性着色

aes(displ, hwy, shape = drv) #按照某个属性定义

aes(displ, hwy, size = cyl) #按照某个属性定义

整体自定义

geom_xxx(colour =自定义颜色)

geom_xxx(shape=形状编号)

geom_xxx(size =编号大小定义 0-10)

注意根据需求按照aes()还是geom进行添加属性

以下为R语言中各shape形状编号

scale控制如何将数据值转换为视觉属性的细节。

labs()和lims() 是对标签和限制进行最常见调整。

labs() ,主要对图形进行调整,注释等

labs()括号内参数:title主标题,subtitle副标题,caption右下角描述,tag左上角

xlab() ,x轴命名

ylab() ,y轴命名

ggtitle() ,标题

lims()

xlim() , xlim(a,b) 限制坐标(a,b)

ylim() , ylim(a,b) 限制坐标(a,b)

scale_alpha() 透明度尺度

scale_shape() , 搭配aes(shape=某个属性)使用

参数:name ,solid =T/F是否填充

scale_size() 搭配aes(size=某个属性)使用

参数:name,range =c(0, 10)

1适用于发散和定性的数据

a scale_colour_brewer() ,scale_colour_brewer(palette =" "),scale_colour_brewer(palette ="Green ")

palette来自RcolorBrewer包,所有面板:

b scale_colour_manual()

scale_colour_manual(values=c( )) 可以 自定义颜色 ,常用的参数

values可直接定义颜色,但是建议使用命名向量,例如

values=c("8" = "red", "4" = "blue", "6" = "darkgreen", "10" = "orange")

PS:注意在aes(colour=factor()),一定要把因素转换为factor型,否则无效

2适用于连续的值,渐变颜色

a scale_colour_gradient()

scale_colour_gradient (low =" ",high=" "),根据值大小定义颜色,创建两个颜色梯度(低-高),

b scale_colour_gradient2()

scale_colour_gradient2(low = " ",mid = " ",high = " ")创建一个发散的颜色梯度(低-中-高)

c scale_colour_gradientn()

创建一个n色渐变,scale_colour_gradientn(colours =许多R语言中的颜色面板),

默认坐标系是笛卡尔 coord_cartesian()

一般不会修改

facet_grid() ,在网格中布置面板

facet_grid(rows = vars() ) ;cols或rows = vars(因素),图形按列或行分割

facet_wrap()

facet_wrap(vars( ), ncol =n) , ncol或者nrow,分为多少行多少列

theme_bw() ,可以覆盖所有主题,背景变为白色,我们在文章中所用的大都需要该背景。

或者用 theme_classic() ,同时去除了网格线

theme() ,修改主题的组件,里面涉及多个参数,根据需求调整

常见参数:

legendposition,图例的位置,包括 "left" 左, "right" 右, "bottom" 下, "top" 上和"none",不显示

使用点形和颜色属性,并基于某变量对数据进行分组

如何基于某个变量对数据进行分组,并用形状和颜色属性来表示

方法:

将分组变量映射给点形(shape)和颜色(colour)属性。可以将一个变量同时映射给shape和colour属性

通过调用scale_shape_manual()函数可以使用其他点形,调用scale_colour_brewer()或者scale_colour_manual()函数可以使用其他调色板,

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12182110.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存