R可视化和ggplot2

《R数据可视化手册》学习笔记3---条形图(3)簇状条形图

2023-09-12  本文已影响0人  RSP小白之路

写在前面。

条形图一般用来展示不同分类下(x轴)某个数值型变量的取值(y轴)。注意,条形的高度,有时是变量的频数,有时是变量的取值本身,需要注意区分。

条形图

我没有按照书中的章节顺序,而是根据条形高度映射数据类型图形位置图形元素进行了分类整合,使脉络更清晰,知识点更集中

同时随着ggplot2包的更新,书中的一些用法也已经不适用了,因此会做一些更正。

所使用的一些示例数据需要安装加载包gcookbook,同时也需要加载ggplot2

if(!require(gcookbook) ) install.packages("gcookbook")
library(gcookbook)
library(ggplot2)

另外,ggplot2绘图的常用基本语句需要知道:

ggplot(data = , aes(x= , y = ) ) + geom_xxxx() + ...

2. 图形位置

ggplot语句中,通过映射一个分类变量给aes语句的fill参数,根据不同的变量值给条形分配不同的填充颜色,然后设定不同的位置排列,分为簇状(并排排列)堆积两种。

2.1 簇状条形图

使用示例数据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

Cultivar映射给fill参数,并设置position= "dodge"(水平方向错开)

映射给y的是确定的值,因此stat="identity"

ggplot(data = cabbage_exp, aes(x= Date ,y = Weight, fill = Cultivar  )) + 
  geom_bar(position = "dodge", stat = "identity")

[图片上传失败...(image-7b5dc3-1694565251399)]

注意,映射给fill的变量也是离散型变量

可以通过scale_fill_brewer()或者scale_fill_manual()对填充颜色进行设置:

ggplot(data = cabbage_exp, aes(x= Date ,y = Weight, fill = Cultivar  )) + 
  geom_bar(position = "dodge", stat = "identity") +
  scale_fill_manual(values = c('#01008B', '#DC010C'))

[图片上传失败...(image-f112a3-1694565251399)]


注意,如果分类变量有缺失值,图形会被略去不绘制,被临近色块扩充。

这里我们手动删掉一个观测,造成分类变量缺失值。

> cabbage_exp[1:5,]
  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

然后再绘制。

ggplot(data = cabbage_exp[1:5,], aes(x= Date ,y = Weight, fill = Cultivar  )) + 
  geom_bar(position = "dodge", stat = "identity") +
  scale_fill_manual(values = c('#01008B', '#DC010C'))

[图片上传失败...(image-ac5a82-1694565251399)]


上一篇 下一篇

猜你喜欢

热点阅读