Вы можете использовать (как минимум) три подхода
- Использование
scale_size_area
: scale_size_area()
- Использовать аргумент диапазона для
scale_size
: scale_size(range = 4:5)
- Установить аргумент пределов между 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')
Еще один, чтобы вручную определить аргумент диапазона в 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')
Третий - установить нижний предел для 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
. Я добавил разрывы, чтобы показать минимальное и максимальное значение, но это не обязательно. Это просто дополнительный подвиг.