Geom_line и fill не работают вместе в ggplot - PullRequest
1 голос
/ 06 мая 2020

кажется, что geom_line мешает aes(fill=), поскольку:

ggplot(iris, aes(Sepal.Width, Sepal.Length,
                 fill = Petal.Width))+
  geom_point(shape = 21)+
  scale_fill_gradient(low="orange",high="blue")+
  geom_line(aes(cyl, am), mtcars)

Дает мне:

Error in FUN(X[[i]], ...) : object "Petal.Width" not found

Любые объяснения?

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

geom_line() наследует глобальную эстетику сюжета от основного вызова ggplot(). Поскольку в данных geom_line() нет столбца Petal.Width, слой не может найти информацию о заливке для этого слоя (и не используется для строки). Чтобы опустить их, вы можете установить inherit.aes = FALSE или переместить вызывающую ошибку эстетику c на нужные слои.

Пример inherit.aes

ggplot(iris, aes(Sepal.Width, Sepal.Length,
                 fill = Petal.Width))+
  geom_point(shape = 21)+
  scale_fill_gradient(low="orange",high="blue")+
  geom_line(aes(cyl, am), mtcars, inherit.aes = FALSE)

Пример перемещения заливки эстети c:

ggplot(iris, aes(Sepal.Width, Sepal.Length))+
  geom_point(aes(fill = Petal.Width), shape = 21)+
  scale_fill_gradient(low="orange",high="blue")+
  geom_line(aes(cyl, am), mtcars)
2 голосов
/ 06 мая 2020

Вам необходимо обнулить fill для вашего второго графика, поскольку mtcars не имеет переменной Petal.Width.

library(ggplot2)
ggplot(iris, aes(Sepal.Width, Sepal.Length,
                 fill = Petal.Width))+
  geom_point(shape = 21)+
  scale_fill_gradient(low="orange",high="blue")+
  geom_line(aes(cyl, am, fill=NULL), mtcars)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...