📅  最后修改于: 2023-12-03 15:07:47.842000             🧑  作者: Mango
在 R 中绘制直方图一般使用 hist()
函数,但默认情况下不会显示条形的计数和百分比。本文将介绍如何在直方图的条形顶部添加计数和百分比标签。
首先,我们需要准备一个用于绘制直方图的数据向量。以下是一个随机生成的数据向量:
set.seed(123)
data <- rnorm(1000)
使用 hist()
函数绘制直方图。我们添加 breaks
参数来控制条形数量,添加 freq=FALSE
参数来显示百分比而不是计数。最后,我们可以使用 main
参数添加一个标题。
hist(data, breaks=20, freq=FALSE, main="Histogram")
使用 ggplot2
包可以很容易地在直方图条形顶部添加计数和百分比标签。我们需要先将数据转换为数据框,并计算每个条形的计数和百分比。
library(ggplot2)
# 将数据转换为数据框
df <- data.frame(values=data)
# 计算每个条形的计数和百分比
df$count <- cut(df$values, breaks=20, labels=FALSE)
df$labels <- sprintf("%d (%.1f%%)", table(df$count), prop.table(table(df$count))*100)
现在,我们可以使用 ggplot2
包的 geom_histogram()
函数绘制直方图,并添加 geom_text()
函数来显示标签。我们还可以使用 scale_x_continuous()
和 scale_y_continuous()
函数来设置横轴和纵轴的标签,以及 theme()
函数来设置图例和标签的字体大小和颜色。
ggplot(df, aes(x=values)) +
geom_histogram(binwidth=0.5, fill="dodgerblue", color="black") +
geom_text(stat="bin", aes(label=labels, y=0.5*..count..),
size=3, color="white", fontface="bold") +
scale_x_continuous("Values", expand=c(0,0)) +
scale_y_continuous("Frequency (%)", labels = scales::percent_format(), expand=c(0,0)) +
theme(plot.title = element_text(size=18, face="bold", vjust=1.5),
axis.title.x = element_text(size=14),
axis.title.y = element_text(size=14),
axis.text = element_text(size=12),
legend.title = element_blank(),
legend.text = element_text(size=12))
本文介绍了如何在 R 中的直方图条形顶部添加计数和百分比标签,以及如何使用 ggplot2
包绘制更具定制性的直方图。