Вычисляемые переменные в 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
)
Запуск этого кода генерирует эту диаграмму:
Однако, если вы хотите сгруппировать по 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
)
... который будет генерировать следующее:
Я надеюсь, что это поможет вам.