前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言 | 条形图绘制

R语言 | 条形图绘制

作者头像
生信real
发布2022-03-29 17:27:50
2.2K0
发布2022-03-29 17:27:50
举报
文章被收录于专栏:Linux基础入门

本次内容介绍条形图的绘制,包括基本条形图、簇状条形图、频数条形图、堆积条形图、百分比条形图。

下次将介绍如何对条形图着色、调整条形图的宽度和间距、添加数据标签等内容。

1绘制基本条形图

演示数据

以gcookbook包中的pg_mean数据集为例。

代码语言:javascript
复制
# 加载gcookbook是为了调用pg_mean数据集
> library(gcookbook)
代码语言:javascript
复制
# pg_mean数据内容
> pg_mean
  group  weight
1  ctrl   5.032
2  trt1   4.661
3  trt2   5.526

绘图代码

代码语言:javascript
复制
ggplot(pg_mean,aes(x = group,y = weight)) + geom_col()

输出图片

简单美化

默认情况下,条形图的填充色为深灰色且无边框。我们可以通过fill参数改变填充色,colour为条形图添加边框线。这里我将填充色更改为亮黄色,边框线为黑色。注意,颜色要用""引起来哦!

代码语言:javascript
复制
ggplot(pg_mean,aes(x = group,y = weight)) + geom_col(fill="lightyellow",colour="black")

2绘制簇状条形图

演示数据

以gcookbook包中的cabbage_exp数据集为例,该数据集包含两个分类变量Cultivar和Date和一个连续变量Weight。

代码语言:javascript
复制
# cabbage_exp数据内容
> cabbage_exp
  Cultivar  Date  Weight     sd      n      se
1      c39   d16   3.18  0.9566144  10  0.30250803
2      c39   d20   2.80  0.2788867  10  0.08819171
3      c39   d21   2.74  0.9834181  10  0.31098410
4      c52   d16   2.26  0.4452215  10  0.14079141
5      c52   d20   3.11  0.7908505  10  0.25008887
6      c52   d21   1.47  0.2110819  10  0.06674995

绘图代码

将分类变量映射到fill参数上,并运行命令geom_col(position = 'dodge')。

代码语言:javascript
复制
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +
  geom_col(position = 'dodge')

Tips:最基本的条形图通常只对应一个绘制在x轴上的分类变量和一个绘制在y轴上的连续型变量。

有时候,我们想额外添加一个分类变量跟x轴上的分类变量一起对数据进行分组。

此时,可通过将该分类变量映射给fill参数来绘制簇状条形图,这里的fill参数用来指定条形的填充色。

position='dodge'以使得两组条形在水平方向上错开排列,否则,系统会输出堆积条形图。

输出图片

3 绘制堆积条形图

演示数据

同上,以gcookbook包中的cabbage_exp数据集为例,该数据集包含两个分类变量Cultivar和Date和一个连续变量Weight。

代码语言:javascript
复制
# cabbage_exp数据内容
> cabbage_exp
  Cultivar  Date  Weight     sd      n      se
1      c39   d16   3.18  0.9566144  10  0.30250803
2      c39   d20   2.80  0.2788867  10  0.08819171
3      c39   d21   2.74  0.9834181  10  0.31098410
4      c52   d16   2.26  0.4452215  10  0.14079141
5      c52   d20   3.11  0.7908505  10  0.25008887
6      c52   d21   1.47  0.2110819  10  0.06674995

绘图代码

使用geom_col()函数,并映射一个变量给填充色参数(fill)即可。该命令会把Date对应到x轴,并以Cultivar作为填充色。

代码语言:javascript
复制
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) + geom_col()

输出图片

反转图例顺序

我们可以通过guides()函数对图例顺序进行调整,指定图例所对应的需要调整的图例属性,本例中对应的是填充色(fill)。

代码语言:javascript
复制
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) + 
geom_col() + 
guides(fill = guide_legend(reverse = T))

反转堆积顺序

可以通过position_stack(reverse = T)来实现。

代码语言:javascript
复制
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +
geom_col(position = position_stack(reverse = T)) +
guides(fill=guide_legend(reverse = T))

4 绘制百分比条形图

演示数据

同上,以gcookbook包中的cabbage_exp数据集为例,该数据集包含两个分类变量Cultivar和Date和一个连续变量Weight。

代码语言:javascript
复制
# cabbage_exp数据内容
> cabbage_exp
  Cultivar  Date  Weight     sd      n      se
1      c39   d16   3.18  0.9566144  10  0.30250803
2      c39   d20   2.80  0.2788867  10  0.08819171
3      c39   d21   2.74  0.9834181  10  0.31098410
4      c52   d16   2.26  0.4452215  10  0.14079141
5      c52   d20   3.11  0.7908505  10  0.25008887
6      c52   d21   1.47  0.2110819  10  0.06674995

绘图代码

用position = "fill",将y的值调整为0~1。

scale_y_continuous(labels=scales::percent),让标签以百分比的形式展示。

代码语言:javascript
复制
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +
geom_col(position = 'fill') + 
scale_y_continuous(labels = scales::percent)

输出图片

5 绘制频数条形图

演示数据

以ggplot2包中的diamonds数据集为例。

代码语言:javascript
复制
> library(ggplot2)
> head(diamonds)
# A tibble: 6 x 10
  carat cut      color clarity depth table price     x     y     z
  <dbl> <ord>    <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  0.23 Ideal    E     SI2      61.5    55   326  3.95  3.98  2.43
2  0.21 Premium  E     SI1      59.8    61   326  3.89  3.84  2.31
3  0.23 Good     E     VS1      56.9    65   327  4.05  4.07  2.31
4  0.29 Premium  I     VS2      62.4    58   334  4.2   4.23  2.63
5  0.31 Good     J     SI2      63.3    58   335  4.34  4.35  2.75
6  0.24 Very Go~ J     VVS2     62.8    57   336  3.94  3.96  2.48

绘图代码

使用geom_bar(),同时不要映射任何变量到y参数,geom_bar()函数在默认情况下将参数设定为stat = "bin",该操作会自动计算每组(根据x轴上面的变量进行分组)变量对应的观测值。

代码语言:javascript
复制
ggplot(diamonds,aes(x = cut)) + geom_bar()

输出图片

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信real 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档