在地图图中使用 draw.bubble 使多个地图的气泡比例保持一致?

Keep scale of bubbles consistent across multiple maps using draw.bubble in mapplots?

我目前正在使用包 mapplots 中的 draw.bubble 绘制一些覆盖在地图上的气泡图。数据包括不同地点许多不同物种的动物密度,例如

Species Density Lat  Lon
A       10      55.4 -7.8
A       12      55.4 -7.7
A       15      55.4 -7.6
B       20      55.4 -7.8
B       22      55.4 -7.7
B       25      55.4 -7.6

等....

我正在使用以下代码为每个物种绘制单独的地图:

xmin <- min(Data$Long)
xmax <- max(Data$Long)
ymin <- min(Data$Lat)
ymax <- max(Data$Lat)

xlim <- c(xmin,xmax)
ylim <- c(ymin,ymax)

windows()

basemap(xlim, ylim)

draw.bubble(Data$Long[Data$Species=="A"],Data$Lat[Data$Species=="A"],
        Data$Density[Data$Species=="A"], maxradius=0.15, pch=21, bg="#00FF0050")

legend.bubble("bottomright", z=max(Data$Density[Data$Species=="A"]), maxradius=0.15, inset=0.02, bg="lightblue",
          txt.cex=0.8, pch=21, pt.bg="#00FF0050")

我遇到的问题是每个独立地块的气泡大小由每个物种的最大密度值决定,所以当我 运行 为多个物种编写此代码时,会生成多个地块每个图中气泡的大小不在同一尺度上。所以我想知道我是否可以为所有绘图中的气泡指定一致的比例?

首先你需要计算所有物种的最大值

totalmax <- max(Data$Density)

然后,对于每个地块,您计算该物种的最大值

speciesmax <- max(Data$Density[Data$Species=="C"])

计算相对气泡大小:

bubblesize = 0.15 * speciesmax/totalmax

并在你的情节中使用它:

draw.bubble(Data$Long[Data$Species=="A"],Data$Lat[Data$Species=="A"],
        Data$Density[Data$Species=="A"], maxradius=bubblesize, pch=21, bg="#00FF0050")