Изменение размера точечной диаграммы в ggplot - PullRequest
0 голосов
/ 18 марта 2019

У меня есть данные:

+-----------+---------+----------+
| AGE_group | mean_y  |  count_y |
+-----------+---------+----------+
|         1 |   0.141 |     1115 |
|         2 |   0.196 |     1043 |
|         3 |   0.202 |     1093 |
|         4 |   0.114 |     1123 |
+-----------+---------+----------+

Я использую ggpplot:

g_age <- ggplot(AGE_group_df, aes(AGE_group, mean_y, group = 1)) +
  geom_line(size=1, color='blue') +
  geom_point(aes(size=AGE_group_df$count_y), color='darkblue') +
  labs(x = 'Age Group',
       y='% Subscribe',
       title='Age Group and Subscribe Rate',
       size='# Customer')
g_age

enter image description here

Проблема: Размер второй точки (количество 1043) очень мал по сравнению с остальными.

Вопрос: Как я могу изменить размер очков? (Я хочу, чтобы размер всех 4 точек был почти одинаковым), сохраняя при этом исходную единицу подсчета.

Большое спасибо.

1 Ответ

1 голос
/ 18 марта 2019

Вы можете использовать (как минимум) три подхода

  1. Использование scale_size_area: scale_size_area()
  2. Использовать аргумент диапазона для scale_size: scale_size(range = 4:5)
  3. Установить аргумент пределов между 0 и максимумом count_y: scale_size(limits = c(0, max(AGE_group_df$count_y))

Здесь более подробно: одним из вариантов является использование scale_size_area:

AGE_group_df <- data.frame(AGE_group = 1:4, 
                           mean_y = c(0.141, 0.196, 0.202, 0.114), 
                           count_y = c(1115, 1043, 1093, 1123))


ggplot(AGE_group_df, aes(x = AGE_group, y = mean_y, size = count_y)) +
  geom_line(size=1, color='blue') +
  scale_size_area(breaks = round(seq(min(AGE_group_df$count_y),
                  max(AGE_group_df$count_y), length.out = 4), 0)) + 
  geom_point(color='darkblue') +
  labs(x = 'Age Group',
       y='% Subscribe',
       title='Age Group and Subscribe Rate',
       size='# Customer')

enter image description here Еще один, чтобы вручную определить аргумент диапазона в scale_size:

ggplot(AGE_group_df, aes(x = AGE_group, y = mean_y, size = count_y)) +
  geom_line(size=1, color='blue') +
  scale_size(breaks = round(seq(min(AGE_group_df$count_y), 
             max(AGE_group_df$count_y), length.out = 4), 0), range = 4:5) + 
  geom_point(color='darkblue') +
  labs(x = 'Age Group',
       y='% Subscribe',
       title='Age Group and Subscribe Rate',
       size='# Customer')

enter image description here Третий - установить нижний предел для scale_size равным 0:

ggplot(AGE_group_df, aes(x = AGE_group, y = mean_y, size = count_y)) +
  geom_line(size=1, color='blue') +
  scale_size(breaks = round(seq(min(AGE_group_df$count_y), 
             max(AGE_group_df$count_y), length.out = 4), 0), 
             limits = c(0, max(AGE_group_df$count_y))) + 
  geom_point(color='darkblue') +
  labs(x = 'Age Group',
       y='% Subscribe',
       title='Age Group and Subscribe Rate',
       size='# Customer')

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

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