使用 ggplot2 组合箱线图和直方图
我正在尝试结合直方图和箱线图来可视化连续变量。这是我到目前为止的代码
require(ggplot2)
require(gridExtra)
p1 = qplot(x = 1, y = mpg, data = mtcars, xlab = "", geom = 'boxplot') +
coord_flip()
p2 = qplot(x = mpg, data = mtcars, geom = 'histogram')
grid.arrange(p2, p1, widths = c(1, 2))
除了 x 轴的对齐之外,它看起来很好。谁能告诉我如何对齐它们? 或者,如果有人有更好的方法使用 ggplot2 制作此图,我们也将不胜感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(4)
忘东忘西忘不掉你 2024-10-16 09:26:22
使用cowplot包。
library(cowplot)
#adding xlim and ylim to align axis.
p1 = qplot(x = 1, y = mpg, data = mtcars, xlab = "", geom = 'boxplot') +
coord_flip() +
ylim(min(mtcars$mpg),max(mtcars$mpg))
p2 = qplot(x = mpg, data = mtcars, geom = 'histogram')+
xlim(min(mtcars$mpg),max(mtcars$mpg))
#result
plot_grid(p1, p2, labels = c("A", "B"), align = "v",ncol = 1)
凉城凉梦凉人心 2024-10-16 09:26:22
然而,使用 ggplot2 的另一种可能的解决方案,到目前为止我不知道如何缩放两个图的高度:
require(ggplot2)
require(grid)
fig1 <- ggplot(data = mtcars, aes(x = 1, y = mpg)) +
geom_boxplot( ) +
coord_flip() +
scale_y_continuous(expand = c(0,0), limit = c(10, 35))
fig2 <- ggplot(data = mtcars, aes(x = mpg)) +
geom_histogram(binwidth = 1) +
scale_x_continuous(expand = c(0,0), limit = c(10, 35))
grid.draw(rbind(ggplotGrob(fig1),
ggplotGrob(fig2),
size = "first"))
一刻暧昧 2024-10-16 09:26:22
我知道的最好的解决方案是使用 ggpubr 包:
require(ggplot2)
require(ggpubr)
p1 = qplot(x = 1, y = mpg, data = mtcars, xlab = "", geom = 'boxplot') +
coord_flip()
p2 = qplot(x = mpg, data = mtcars, geom = 'histogram')
ggarrange(p2, p1, heights = c(2, 1), align = "hv", ncol = 1, nrow = 2)
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
你可以通过ggExtra中的coord_cartesian()和align.plots来做到这一点。
这是align.plot的修改版本,用于指定每个面板的相对大小:
用法:
=“align.plots2第二个示例”="">
you can do that by coord_cartesian() and align.plots in ggExtra.
Here is a modified version of align.plot to specify the relative size of each panel:
usage: