在每节,先运行以下这几行程序。
library(ggplot2)
library(ggpubr)
library(ggtext) #用于个性化图表
library(dplyr) #用于数据处理
p_base <- ggplot(data = mtcars, aes(x = wt, y = mpg)) + geom_point()
geom_histogram和geom_freqpoly都是用来绘制数据分布图的两种常用函数。它们都有助于理解数据的分布情况,但它们的表现方式有所不同。
p1 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram()
p2 <- ggplot(mtcars, aes(x = mpg)) + geom_freqpoly()
ggarrange(p1, p2, ncol = 2, nrow = 1, widths = c(1, 1), heights = 0.5)
geom_histogram 用于绘制直方图,以下是一些常用参数:
mapping: 图层的美学映射,通常使用 aes() 函数指定。 data: 要绘图的数据集。 stat: 统计变换,默认是 “bin”,表示将数据分箱。 binwidth: 箱宽,控制每个箱的宽度。 bins: 箱的数量,如果没有指定 binwidth,可以通过这个参数指定箱的数量。 breaks: 指定箱的边界,如果不希望箱间距均匀,可以使用这个参数。 fill: 箱的填充颜色。 color: 箱的边框颜色。 alpha: 箱的透明度,取值范围在0到1之间。 position: 图层的位置调整,常用的有 “identity”、“stack” 和 “dodge”。
ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 0.5, fill = "blue", color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Histogram", x = "Value", y = "Frequency")
geom_freqpoly 用于绘制频率多边形图,以下是一些常用参数:
mapping: 图层的美学映射,通常使用 aes() 函数指定。 data: 要绘图的数据集。 stat: 统计变换,默认是 “bin”,表示将数据分箱。 binwidth: 箱宽,控制每个箱的宽度。 bins: 箱的数量,如果没有指定 binwidth,可以通过这个参数指定箱的数量。 breaks: 指定箱的边界,如果不希望箱间距均匀,可以使用这个参数。 color: 线条颜色。 size: 线条宽度。 linetype: 线条类型,比如 “solid”(实线)、“dashed”(虚线)等。
ggplot(mtcars, aes(x = mpg)) + geom_freqpoly(binwidth = 0.5, color = "red", size = 1) +
theme_minimal() +
labs(title = "Frequency Polygon", x = "Value", y = "Frequency")
直方图和频率多边形图都展示了单一数值变量的分布情况。相比箱线图,它们能提供更多关于单个组的数据分布信息,但也需要更多的空间。两者的工作方式相同:先将数据分箱,然后统计每个箱中的观察值数量。唯一的区别在于显示方式:直方图使用条形,而频率多边形图使用线条。可以使用 binwidth 参数来控制箱的宽度(如果不希望箱间距均匀,可以使用 breaks 参数)。调整箱的宽度非常重要。默认情况下,数据会被分成30个箱。
WalterWang提供的更多示例
p1 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 6, fill='red')
p2 <- ggplot(mtcars, aes(x = mpg)) + geom_freqpoly(binwidth = 6, fill='green')
p3 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 2, color='red')
p4 <- ggplot(mtcars, aes(x = mpg)) + geom_freqpoly(binwidth = 2, color='green')
ggarrange(p1, p2, p3, p4, ncol = 2, nrow = 2, widths = c(1, 1), heights = c(1, 1))