r - ggplot2:当 'size' 包含内部和外部 aes 语句时,为什么符号大小不同?

标签 r ggplot2

我已经使用 base-R 创建了很多 map ,但我现在正尝试使用 ggplot2 执行类似的任务,因为可以在单个页面上轻松排列多个图。基本上,我正在绘制收集特定感兴趣物种样本的位置,并希望符号大小反射(reflect)在该位置收集的物种的总重量。创建 basemap 和各种图层不是问题,但我无法按照我想要的方式获取符号大小和相关联的图例。

下面的可行示例演示了该问题。当我在 aes 之外包含“大小”时,符号大小似乎被适本地缩放(plot1)。但是当我在 aes 语句中放入“大小”时(为了获得图例),符号大小不再正确(plot2)。看起来 ggplot2 已经重新调整了数据。这应该是一项简单的任务,所以我显然缺少一些非常基本的东西。任何帮助理解这一点将不胜感激。

library(ggplot2)

#create a very simple dataset that includes locations and total weight of samples collected from each site
catch.data<-data.frame(long=c(-50,-52.5,-52,-54,-53.8,-52),
                       lat=c(48,54,54,55,52,50),
                       wt=c(2,38,3,4,25,122))

#including 'size' outside of aes results in no legend
#but the symbol sizes are represented correctly
plot1<-ggplot(catch.data,aes(x=long,y=lat)) +
  geom_point(size=catch.data$wt,colour="white",fill="blue",shape=21)    

#including 'size' within aes appears necessary in order to create a legend
#but the symbol sizes are not represented correctly
plot2<-ggplot(catch.data,aes(x=long,y=lat)) +
  geom_point(aes(size=catch.data$wt),colour="white",fill="blue",shape=21)

enter image description here

最佳答案

首先,您不应该在 aes 中引用数据框名称,它会将图例弄乱。所以正确的版本将是

plot3 <- ggplot(catch.data,aes(x=long,y=lat)) + 
         geom_point(aes(size=wt),colour="white",fill="blue",shape=21)

现在为了展示多样性,您应该使用 rangescale_size_continuous 参数,例如
plot3 + scale_size_continuous(range = range(catch.data$wt) / 5)

enter image description here

多换几次,看看哪一个适合你。请注意,存在将数字表示为区域的常见可视化陷阱(谷歌例如“为什么饼图不好”)。

编辑:回答下面的评论,您可以通过例如引入固定比例scale_size_continuous(limits = c(1, 200), range = c(1, 20))

关于r - ggplot2:当 'size' 包含内部和外部 aes 语句时,为什么符号大小不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45802571/

相关文章:

r - tidyr::expand_grid() 的行为不符合预期;我缺少什么?

r - 为什么使用assign不好?

r - 在 R 中使用 gganimate 创建绘图动画的问题

r - ggbiplot - 改变点的大小

r - 如何使用plot_grid在没有任何空间的情况下放置绘图?

R,Rstudio 控制台编码窗口

r - 更改函数内的默认 ggplot2 比例

r - 在 ggplot barplot 中添加自定义行

r - 使用身份标度时为 alpha 添加图例

ggplot 的 R Shiny Interactive 绘图标题