写在前面。
条形图一般用来展示不同分类下(x轴)某个数值型变量的取值(y轴)。注意,条形的高度,有时是变量的频数
,有时是变量的取值本身
,需要注意区分。
条形图
我没有按照书中的章节顺序,而是根据条形高度映射数据类型
、图形位置
和图形元素
进行了分类整合,使脉络更清晰,知识点更集中。
同时随着ggplot2包的更新,书中的一些用法也已经不适用了,因此会做一些更正。
所使用的一些示例数据需要安装加载包gcookbook,同时也需要加载ggplot2。
if(!require(gcookbook) ) install.packages("gcookbook")
library(gcookbook)
library(ggplot2)
另外,ggplot2绘图的常用基本语句需要知道:
ggplot(data = , aes(x= , y = ) ) + geom_xxxx() + ...
1. 条形高度
如上文所说,条形的高度有时映射的是变量的取值本身,有时是变量的频数统计值。
1.1 简单条形图
数据中,一个变量表示在x
轴的位置,另一个变量表示每个条形的高度,那么映射的也就是变量取值本身。
我们使用数据pg_mean
作为示例数据。
> str(pg_mean)
'data.frame': 3 obs. of 2 variables:
$ group : Factor w/ 3 levels "ctrl","trt1",..: 1 2 3
$ weight: num 5.03 4.66 5.53
基于此,我们使用ggplot()
函数和geom_bar(stat = "identity")
:
ggplot(data = pg_mean, aes(x= group, y =weight)) + geom_bar(stat = "identity")
[图片上传失败...(image-aacbac-1694394475903)]
上例子,x
轴映射的变量离散型变量,如果是连续型变
量,会在最大最小值之间取所有可能值
作为x轴映射值
。
以BOD
数据集作为示例数据集:
> BOD
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
绘图如下:
ggplot(data = BOD, aes(x= Time, y =demand)) + geom_bar(stat = "identity")
[图片上传失败...(image-cd9d89-1694394475903)]
可以使用factor
函数将x
取值转换为离散型数据
:
ggplot(data = BOD, aes(x= factor(Time), y =demand)) + geom_bar(stat = "identity")
[图片上传失败...(image-32b0ee-1694394475903)]
可以看到,x
转换前后图形是不同的。