ggridges中的计算变量

时间:2018-05-07 10:59:17

标签: r ggplot2 ggridges

这是一个MWE:

new Data[] {new Data("E30", "1985", ratingE30)};

我的查询是:我们不能说library(ggplot2) library(ggridges) ggplot(iris, aes(x=Sepal.Length, y=Species, fill=..x..)) + geom_density_ridges_gradient() 吗?

我理解fill = Sepal.Length是指计算变量..x..,对x的调用可能不会在ggplot术语中看到变量,但在ggplot咒语时我们可以参考geom_density_ridges_gradient,我们可以吗?

有人可以澄清为什么我们需要在这种情况下说Sepal.Length而不是..x..?我不完全确定这里的推理。

更准确地说,为什么这不起作用:

Sepal.Length

< ------------我想从此处开始重述我的查询------------>

如果我这样做:

ggplot(iris, aes(x=Sepal.Length, y=Species, 
fill=Sepal.Length)) +  geom_density_ridges_gradient()

geom_density_ridges_gradient将无法找到变量Sepal.Length并且它会出错。

所以,正确的咒语应该是:

ggplot(iris, aes(x = Sepal.Length, y = Species)) + 
geom_density_ridges_gradient(fill = Sepal.Length)

geom_density_ridges_gradient应该能够找到计算变量.. x ..但它不起作用。有人可以解释一下这是为什么吗?

另一个问题:

如果我这样做:

ggplot(iris, aes(x = Sepal.Length, y = Species)) + 
geom_density_ridges_gradient(fill = ..x..)

为什么它没有给我一个错误信息说Sepal.Length not found,
它只是忽略fill参数并绘制输出,为什么会这样?

最终似乎有用的是:

ggplot(iris, aes(x = Sepal.Length, y = Species,fill = Sepal.Length)) + 
geom_density_ridges_gradient()

但我不确定为什么会有效。

基本上我很困惑应该放置与填充相对应的参数。

1 个答案:

答案 0 :(得分:0)

我认为这里可能发生的事情是Sepal.Length不是一个类别。

考虑到这一点,我可以假设这就是你所追求的吗? (如果没有,请告诉我,我会尽力回答你需要的东西。)

library(tidyverse)
library(ggridges)

ggplot(
  data = iris, 
  aes(x=Sepal.Length, y=Species, fill=Species)
  ) + 
  geom_ridgeline(
    stat = "binline", 
    bins = 20, 
    draw_baseline = FALSE
  )

运行此代码会生成此图表:

ggridges-chart

但是,如果您想按照建议Sepal.Length分组,可以添加以下内容(来自here):

ggplot(
  data = iris, 
  aes(x=Sepal.Length, y=Species, fill=Species, group=Sepal.Length)
  ) + 
  geom_ridgeline(
    stat = "binline", 
    bins = 20, 
    draw_baseline = FALSE
  )

...会生成以下内容:

ggridges-group-chart

我希望能帮助你。