Вопрос

Я пытаюсь использовать geom_point Чтобы проиллюстрировать количество моих данных. Я также хотел бы аннотировать несколько очков на моем графике с geom_text. Отказ Когда я добавляю вызов geom_text, Похоже, что он замышляет что-то под точками в легенде. Я пробовал обратный порядок слоев безрезультатно. Я не могу обернуть голову, почему это делает это. Кто-нибудь видел это раньше?

set.seed(42)
df <- data.frame(x = 1:10
    , y = 1:10
    , label = sample(LETTERS,10, replace = TRUE)
    , count = sample(1:300, 10, replace = FALSE)
)

p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2))

alt text

Это было полезно?

Решение

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

Кроме того, когда вы указываете сопоставления внутри ggplot(aes()), Эти отображения относятся к каждый последующий слой. Отказ Это хорошо для вашего х и у, так как оба geom_point а также geom_text используй их. Это плохо для size = count, так как это относится только к точкам.

Так что это мои два правила, чтобы предотвратить такое вещю:

  1. Только поставьте отображения на основе данных внутри aes(). Отказ Если аргумент принимает одно предварительно определенное значение, пропустите его на слой за пределами из aes().
  2. Картографические данные только для тех слоев, которые это будут использовать. Отказ Следствие: только данные карты внутри ggplot(aes()) Если вы уверены, что каждый последующий слой будет использовать его. В противном случае сопоставьте его на уровне слоя.

Так что я бы сюжетал это таким образом:

p <- ggplot(data = df, aes(x = x, y = y)) + geom_point(aes(size = count)) 
p + geom_text(aes(label = label), size = 4, vjust = 2) 

Другие советы

Или, если вам нужно указать размер текста внутри AES, то Legend = False Sugpress Hense The Legends Geom:

p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2), show_guide = FALSE)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top