Как получить размер geom_point для отображения фактических значений, а не относительных значений - PullRequest
1 голос
/ 20 июня 2019

Вероятно, есть простое решение, но я слишком новичок, чтобы знать, что это такое - поэтому я очень признателен за любую помощь.

Я пытаюсь создать график, который будет показывать среднее время до первого ответа в сравнении с частотой ответов. Однако я хочу, чтобы размер каждой точки представлял реальный размер (количество активных пользователей в приведенной ниже таблице), а не относительный размер.

Таблица фреймов данных:

enter image description here

ggplot(benchmarksdf, aes(benchmarksdf$`Avg. Time To First Response`,benchmarksdf$`Response Rate`)) +
  geom_point(shape=21, aes(fill=benchmarksdf$`Community Name`, size=benchmarksdf$`Active Users`)) +
  geom_text(aes(label=benchmarksdf$`Community Name`), check_overlap = T, show.legend = F, size = 3, vjust = 2) +
  labs(title = "Benchmarking Top Enterprise Communities", 
       subtitle = "Comparing top brand communities by response rate and avg. time to first response",
       y = "Response Rate %",
       x = "Avg. time to first response (days)") + scale_x_reverse () +
  theme_classic()+
  theme(legend.position = 'none',aspect.ratio = 0.8)

Это приводит к следующему результату:

Gggplot сообщества по размеру:

enter image description here

Мои глаза могли бы обмануть меня, но в данный момент размер каждой точки кажется установленным относительностью друг к другу, а не значениям данных.

Есть ли способ исправить это и представить ли это абсолютное число активных пользователей?

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Вам придется изменить шкалу размера на непрерывную вместо стандартной.попробуйте следующий код:

ggplot(benchmarksdf, aes(x =benchmarksdf$Avg.time.to.first.response,y= benchmarksdf$Response.rate)) + geom_point(shape=21, aes(fill=benchmarksdf$Community.name, size = benchmarksdf$Active.users)) +scale_size_continuous(limits = c(0,2100))+geom_text(aes(label=benchmarksdf$Community.name), check_overlap = T, show.legend = F, size = 3, vjust = 2) +
  labs(title = "Benchmarking Top Enterprise Communities", 
       subtitle = "Comparing top brand communities by response rate and avg. time to first response",
       y = "Response Rate %",
       x = "Avg. time to first response (days)") + scale_x_reverse () +
  theme_classic()+
  theme(legend.position = 'none',aspect.ratio = 0.8)

enter image description here

0 голосов
/ 20 июня 2019

Убедитесь, что Active users равно numerics, а не factors.

Я попытался с набором данных midwest из пакета ggplot2, и дисплей кажется правильным:

library(ggplot2)
data(midwest)
gg <- ggplot(midwest[1:10,],aes(x = area, y = poptotal)) +
  geom_point(aes(size=popdensity)) +
  labs(title = "Area vs Pop", subtitle = "Midwest dataset", y = "Pop", x = "Area") +
  geom_text(aes(label=county),size = 3,hjust = 0.5, vjust = -1.5)
gg

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...