geom_density_ridges y轴的长度

时间:2019-09-02 11:47:28

标签: r ggplot2

我的代码与以下示例非常相似。我有类别(内部存储为因子),并且需要绘制多个图形。 当我绘制它们时,y轴的高度不在图中所示的高度上。有解决方案吗?

library(ggplot2)
library('grid')
a=ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges()
b=ggplot(iris, aes(x = Sepal.Width, y = Species)) + geom_density_ridges()


test=cbind(ggplotGrob(a), ggplotGrob(b),size="last")
grid.draw(test)

enter image description here。imgur.com/gTshi.jpg

2 个答案:

答案 0 :(得分:2)

height参数有一个..ndensity ..选项

library(devtools)

install_github("clauswilke/ggridges")

a <- ggplot(iris, aes(x = Sepal.Length, y = Species, height = ..ndensity..)) + geom_density_ridges()

b <- ggplot(iris, aes(x = Sepal.Width, y = Species, height = ..ndensity..)) + geom_density_ridges()

test <- cbind(ggplotGrob(a), ggplotGrob(b),size="last")

grid.draw(test)

答案 1 :(得分:1)

一种可能的解决方案是先reshape the data from wide to long,在这种情况下使用软件包reshape2,然后使用ggplot2的构面。

library(ggplot2)
library(ggridges)

long_iris <- reshape2::melt(iris[c(1, 2, 5)], id.vars = "Species")

g <- ggplot(long_iris) + 
  geom_density_ridges(aes(x = value, y = Species)) +
  theme_ridges() +
  facet_wrap(~ variable)

g

enter image description here