Какова функция aes (x, y) в geom_text (данные = метки, aes (x, y, метка = страна), размер = 5)? - PullRequest
0 голосов
/ 06 октября 2019

В одном примере моего курса EdX мне интересно, почему мы не можем просто вставить label в ggplot(mapping = aes(...)), но дать aes(x, y) в geom_text. Какова функция этого? Указывает ли он место для размещения метки, когда он просто говорит aes(x, y, label = country)?

временной ряд ожидаемой продолжительности жизни - линии, окрашенные по стране и помеченные, без легенды

labels <- data.frame(country = countries, x = c(1975, 1965), y = c(60, 72))
gapminder %>% filter(country %in% countries) %>%
ggplot(aes(year, life_expectancy, col = country)) +
   geom_line() +
   geom_text(data = labels, aes(x, y, label = country), size = 5) +
   theme(legend.position = "none")

1 Ответ

1 голос
/ 07 октября 2019

Короткий ответ: вы можете поместить label в исходный аргумент aes(...).

aes является аргументом в пользу эстетики сюжета, включая все, например, y, x, общее size и т. Д., И распространяется на все дальнейшие ggplot, geom_...и stat_... звонок. Таким образом, если вы добавите label в аргумент aes, он будет использоваться в качестве значения при любом вызове функции для этого конкретного графика, , если не задано значение inherit.aes = FALSE, для которого потребуется новыйуказанный aes(...) аргумент.

Таким образом, два примера ниже, где я использую набор данных mtcars, эквивалентны.

data(mtcars)
library(ggplot2)

#Example 1:
ggplot(data = mtcars, aes(x = hp, y = mpg)) + 
    geom_smooth() + 
    geom_text(aes(label = cyl), size = 5)

#Example 2:
ggplot(data = mtcars, aes(x = hp, y = mpg, label = cyl)) + 
    geom_smooth() + 
    geom_text(size = 5)
...