《R数据可视化手册》——3.1 绘制简单条形图

简介:

本节书摘来异步社区《R数据可视化手册》一书中的第3章,第3.1节,作者:【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.1 绘制简单条形图

问题
你有一个包含了两列数据的数据框,其中一列数据表示条形在x轴上的位置,另一列表示每个条形在y轴上对应的高度,基于此,如何绘制条形图?

方法
使用ggplot()函数和geom_bar(stat="identity")绘制上述条形图,并分别指定与x轴和y轴对应的变量(见图3-1)。

library(gcookbook) #为了使用数据
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity")

595b392914e029b4ca6088e3101c8dc3bf5f1931

讨论
当x是连续型(数值型)变量时,条形图的结果与上图会略有不同。此时,ggplot不是只在实际取值处绘制条形,而将在x轴上介于最大值和最小值之间所有可能的取值处绘制条形,如图3-2所示。我们可以使用factor()函数将连续型变量转化为离散型变量。

# 没有Time == 6的输入
BOD

 Time demand
   1  8.3
   2  10.3
   3  19.0
   4  16.0
   5  15.6
   7  19.8

# Time是数值型(连续型)变量
str(BOD)

'data.frame': 6 obs. of 2 variables:
 $ Time : num 1 2 3 4 5 7
 $ demand: num 8.3 10.3 19 16 15.6 19.8
 - attr(*, "reference")= chr "A1.4, p. 270"

ggplot(BOD, aes(x=Time, y=demand)) + geom_bar(stat="identity")

# 使用factor()函数将Time转化为离散型(分类)变量
ggplot(BOD, aes(x=factor(Time), y=demand)) + geom_bar(stat="identity")

0808f2fec3a6b040742d1828b59ae5e2d7247a1c

图3-2 左图:针对变量值绘制的条形图(参数stat="identity"),x轴对应的是连续型变量  右图:将x转化为因子型变量之后绘制的条形图(注意此处缺失了取值为6的条形)

本例中,数据集中包含两列分别对应于x和y变量。如果你想让条形图的高度与每组变量的频数相对应,可参见3.3节的内容。

默认设置下,条形图的填充色为黑灰色且条形图没有边框线,我们可通过调整fill参数的值来改变条形图的填充色;可通过colour参数为条形图添加边框线。在图3-3中,我们将填充色和边框线分别指定为浅蓝色和黑色。

850f5627cc31edcaa6c79ada9a2ae2282b4eb2a5
ggplot(pg_mean, aes(x=group, y=weight)) +
  geom_bar(stat="identity", fill="lightblue", colour="black")

在ggplot2中,颜色参数默认使用的是英式拼写colour,而非美式拼写color。然而,ggplot2会在底层将美式拼写重映射为英式拼写,因此输入美式拼写的参数并不影响函数的运行。
另见
如果你想让条形图的高度对应于每组变量的频数,可参见3.3节的内容。

根据另一个变量值重排因子水平顺序的内容可参见15.9节。手动更改因子水平顺序的内容,可参见15.8节。

更多关于图形着色的内容,可参见本书第12章。

相关文章
|
SQL 数据可视化 算法
数据可视化—绘制简单的折线图
在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可
260 0
数据可视化—绘制简单的折线图