《R数据可视化手册》一第3章 条形图3.1 绘制简单条形图

简介:

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

第3章 条形图

R数据可视化手册
条形图也许是最常用的数据可视化方法,通常用来展示不同的分类下(在x轴上)某个数值型变量的取值(在y轴上)。例如,条形图可以用来形象地展示四种不同商品的价格情况,但不适宜用来展示商品价格随时间的变动趋势,因为这里时间是一个连续变量——尽管我们也可以这么做,后面会看到这种情形。

绘制条形图时需特别注意一个重要的细节:有时条形图的条形高度表示的是数据集中变量的频数,有时则表示变量取值本身。牢记这个区别——这里极易混淆,因为两者与数据集的对应关系不同,但又对应同样的术语。本章将对此进行深入讨论,并分别介绍这两类条形图的绘图技巧。

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")


08c40bfc7a0f501a5c8d052bc9bcf8d3eb530f43

讨论
当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")


1fdeb1c95343dc78526fa40147c540ad4c7d5342

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

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


5cfcd73739828ce04dcc344cdca289d28cdf3b2b
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章。

相关文章
R语言笔记丨绘图基础知识:饼图、条形图
R语言笔记丨绘图基础知识:饼图、条形图
下一篇
无影云桌面