Что означает размер в geom_point?

В обоих графиках точки выглядят иначе, но почему?

mya <- data.frame(a=1:100)

ggplot() +
  geom_path(data=mya, aes(x=a, y=a, colour=2, size=seq(0.1,10,0.1))) +
  geom_point(data=mya, aes(x=a, y=a, colour=1, size=1)) +
  theme_bw() +
  theme(text=element_text(size=11))

ggplot() +
  geom_path(data=mya, aes(x=a, y=a, colour=2, size=1)) +
  geom_point(data=mya, aes(x=a, y=a, colour=1, size=1)) +
  theme_bw() +
  theme(text=element_text(size=11))

?aes_linetype_size_shape объясняет...

 # Size examples
 # Should be specified with a numerical value (in millimetres),
 # or from a variable source

Но в моем коде он выглядит иначе.

Ответ 1

В вашем коде есть несколько запутанных вещей. Кажется, вы используете функцию aes таким образом, чтобы это не было предназначено. Как и проблема size, вы получаете несколько легенд, и я думаю, что ggplot запутался в цветах.

Функция aes используется для сопоставления эстетики с переменными в данных, но вы используете ее для установки эстетики в константу. Кроме того, вы используете функцию aes, чтобы установить две отдельные эстетики. Даже если вы установили size в константу, ggplot2 не любит два отдельных (пути и точки) отображения размера. Кроме того, вы делаете то же самое с цветовым отображением.

size и colour установлены в постоянные значения, поэтому перемещайте их вне функции aes. Кроме того, в отношении size пути в первом графике, вероятно, безопаснее добавить переменную size в фрейм данных. (Я немного изменил ваши данные, чтобы можно было видеть как точки, так и пути.) И как и ожидалось, одна легенда в первом графике рисуется.

    library(ggplot2)
mya <- data.frame(a=1:10, size = seq(10, 1, -1))

ggplot() +
  geom_path(data=mya, aes(x=a, y=a, size=size), colour = 2) +
  geom_point(data=mya, aes(x=a, y=a), colour = 1, size = 3) +
  theme_bw() +
  theme(text=element_text(size=11))

ggplot() +
  geom_path(data=mya, aes(x=a, y=a), colour = 2, size = 1) +
  geom_point(data=mya, aes(x=a, y=a), colour = 1, size = 3) +
  theme_bw() +
  theme(text=element_text(size=11))

enter image description here