我已经使用 base-R 创建了相当多的地图,但我现在尝试使用 ggplot2 执行类似的任务,因为可以轻松地将多个绘图排列在单个页面上。基本上,我正在绘制收集特定感兴趣物种样本的位置,并希望符号大小反映在该位置收集的物种的总重量。创建底图和各种图层并不是问题,但我无法按照我想要的方式获取符号大小和相关图例。
下面的可行示例演示了该问题。当我在 aes 之外包含“大小”时,符号大小似乎已适当缩放(图 1)。但是,当我将“大小”放入 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)
Run Code Online (Sandbox Code Playgroud)