您可以尝试用矩形替换直方图以生成如下图:
这个怎么做:
生成随机数据
df <- data.frame(State = LETTERS[1:3],
Y = sample(1:10, 30, replace = TRUE),
X = rep(1:10, 3))
用矩形替换直方图
library(ggplot2)
# You can plot geom_histogram or bar (pre-counted stats)
ggplot(df, aes(X, Y)) +
geom_bar(stat = "identity", position = "dodge") +
facet_grid(State ~ .)
# Or you can plot similar figure with geom_rect
ggplot(df) +
geom_rect(aes(xmin = X - 0.4, xmax = X + 0.4, ymin = 0, ymax = Y)) +
facet_grid(State ~ .)
添加箱线图
要添加箱线图,我们需要:
- 翻转坐标(函数
coord_flip
)
- 切换 X 和 Y 值
geom_rect
Code:
ggplot(df) +
geom_rect(aes(xmin = 0, xmax = Y, ymin = X - 0.4, ymax = X + 0.4)) +
geom_boxplot(aes(X, Y)) +
coord_flip() +
facet_grid(State ~ .)
Result:
最终的情节代码具有更好的视觉效果
ggplot(df) +
geom_rect(aes(xmin = 0, xmax = Y, ymin = X - 0.4, ymax = X + 0.4),
fill = "blue", color = "black") +
geom_boxplot(aes(X, Y), alpha = 0.7, fill = "salmon2") +
coord_flip() +
facet_grid(State ~ .) +
theme_classic() +
scale_y_continuous(breaks = 1:max(df$X))