2015-10-14 2 views
0

В настоящее время я рисую несколько участков пузыря, наложенных на карты, используя draw.bubble из пакета 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") 

Проблема, которую я имею, что размер пузырьков для каждый отдельный график определяется наибольшим значением плотности для каждого вида, поэтому, когда я запускаю этот код для нескольких видов, создавая несколько графиков, размер пузырьков на каждом участке не находится в одном масштабе. Поэтому я хотел знать, есть ли в любом случае, что я могу указать постоянную шкалу для пузырей на всех моих участках?

ответ

1

Сначала Вам нужно вычислить максимум всех видов

totalmax <- max(Data$Density) 

Тогда для каждого участка рассчитать максимальную этого вида

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

Вычислить относительную bubblesize:

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") 
+0

Спасибо, мой мозг математики полностью провалил меня на этом, но это прекрасно! –

Смежные вопросы