Вычисляемые переменные в ggridges

Вот MWE:

library(ggplot2)
library(ggridges)

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

Мой вопрос: мы не можем сказать fill = Sepal.Length?

Я это понимаю ..x.. относится к вычисляемой переменной x и призыв к geom_density_ridges_gradient вероятно, не увидит переменную в терминологии ggplot, но во время заклинания ggplot мы МОЖЕМ обратиться к Sepal.Length, мы можем?

Может кто-нибудь уточнить, почему мы должны сказать ..x.. и не Sepal.Length в этом случае? Я не совсем уверен в рассуждениях здесь.

Чтобы быть более точным, почему это не работает:

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

<------------ Я хотел бы перефразировать мой запрос, начиная с этой страницы ------------>

Если я сделаю:

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

geom_density_ridges_gradient не сможет найти переменную Sepal.Length и выдает ошибку.

Итак, правильное заклинание должно быть:

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

geom_density_ridges_gradient должен иметь возможность найти вычисляемую переменную..x.., но она НЕ работает. Может кто-нибудь объяснить, почему это так?

Еще один запрос:

Если я сделаю:

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

Почему это не дает мне сообщение об ошибке, что Sepal.Length не найден,
он просто игнорирует аргумент заполнения и выводит вывод, почему это так?

Что, наконец, кажется, работает так:

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

но я не уверен, почему это работает.

По сути, я не совсем понимаю, где должен располагаться аргумент, соответствующий заливке.

1 ответ

Я думаю, что здесь может происходить, что 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-чарт

Однако, если вы хотите сгруппировать по Sepal.LengthКак вы предлагаете, вы можете добавить следующее ( отсюда):

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

... который будет генерировать следующее:

ggridges-группа-диаграмма

Я надеюсь, что это поможет вам.

Другие вопросы по тегам