R可视化和ggplot2

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

2023-09-11  本文已影响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() + ...

1. 条形高度

如上文所说,条形的高度有时映射的是变量的取值本身,有时是变量的频数统计值。

1.2 频数条形图

如果数据中每一行观测对应的就是一个样本,如何绘制样本频数分布条形图呢?

使用示例数据diamonds数据集,它记录了钻石的品质数据

> str(diamonds)
tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

使用geom_bar(),同时y不映射变量,那么geom_bar()会默认统计x映射变量的频数。本例中x离散型变量

ggplot(data = diamonds, aes(x= cut )) + geom_bar()

[图片上传失败...(image-b99147-1694479057080)]


可以看到,有20000颗以上的钻石切割得最佳。

如果x映射的变量是连续型,我们会得到一张每个x值对应的频数分布直方图

ggplot(data = diamonds, aes(x= carat )) + geom_bar()

[图片上传失败...(image-fa3b48-1694479057080)]

注意,和书中说的不同,现在默认情况下,<font color=red>geom_bar()和geom_histogram()绘制连续型变量的图形还是不同的。</font>

ggplot(data = diamonds, aes(x= carat )) + geom_histogram()

[图片上传失败...(image-685200-1694479057080)]


不过,上述geom_histogram()和下面的语句是等价的:

ggplot(data = diamonds, aes(x= carat )) + stat_bin()

以上,条形的高度x轴映射变量的关系就讲这么多。


上一篇 下一篇

猜你喜欢

热点阅读