简体   繁体   English

调整ggplot中散点图的大小

[英]Resize points of scatter plot in ggplot

I have data: 我有数据:

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

I use ggpplot: 我用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

在此处输入图片说明

Problem: Size of second point (count is 1043) is very small compare to the others. 问题:第二点的大小(计数为1043)与其他点相比很小。

Question: How can I change the size of the points? 问题:如何更改积分大小? (I want to make size of all 4 points nearly equal) while keeping the original count unit. (我想使所有4个点的大小几乎相等),同时保持原始计数单位。

Thank you very much. 非常感谢你。

You can use (at least) three approaches 您可以使用(至少)三种方法

  1. Use scale_size_area : scale_size_area() 使用scale_size_areascale_size_area()
  2. Use the range argument for scale_size : scale_size(range = 4:5) 使用scale_size的range参数: scale_size(range = 4:5)
  3. Set the limits argument between 0 and maximum count_y : scale_size(limits = c(0, max(AGE_group_df$count_y)) 将limit参数设置为0到最大count_yscale_size(limits = c(0, max(AGE_group_df$count_y))

Here more detailed: one option is to use scale_size_area : 这里更详细:一种选择是使用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')

在此处输入图片说明 Another one to manually define the range argument in scale_size : 另一个在scale_size手动定义范围参数的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')

在此处输入图片说明 Third one is to set the lower limit for scale_size to 0: 第三个是将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')

Note that you can define the size within the aes function. 请注意,您可以在aes函数中定义大小。 I added breaks to show the minimum and maximum value, but that is not necessary. 我添加了休息时间以显示最小值和最大值,但这不是必需的。 It's just an extra feat. 这只是一个额外的壮举。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM