2012-05-25 92 views
4

相關的圈的大小我希望能夠創建一個世界地圖,在與圖表相關的圖上有圓圈。世界地圖 - 繪圖圈,圈的大小與

這個我試圖使用mapBubbles,但是當繪製圖表時出了點問題。

我的數據文件如下:

ISO3V10 Country No of Documents Lat Lon 
ARG  Argentina 41   -64 -34 
AUS  Australia 224   133 -27 
CAN  Canada  426   -95 60 
IRL  Ireland 68   -8 53 
ITA  Italy    583   12.8333 42.8333 
NLD  Netherlands 327   5.75 52.5 
NZL  New Zealand 26   174 -41 
ESP  Spain    325   -4 40 
GBR  United Kingdom 2849    -2 54 
USA  United States 3162   -97 38 

我寫的代碼如下:

# Thanks to Andrie for the reproducible code and Paolo for the suggested edit 

zz <-"ISO3V10 Country No.of.Documents Lat Lon 
ARG Argentina 41 -64 -34 
AUS Australia 224 133 -27 
CAN Canada 426 -95 60 
IRL Ireland 68 -8 53 
ITA Italy 583 12.8333 42.8333 
NLD Netherlands 327 5.75 52.5 
NZL 'New Zealand' 26 174 -41 
ESP Spain 325 -4 40 
GBR 'United Kingdom' 2849 -2 54 
USA 'United States' 3162 -97 38 
" 

dF2 <- read.table(textConnection(zz), header = TRUE) 

# dF2 <- read.delim(file="C:\\Users\\js207963\\Documents\\noofpublications_AllUpdated.txt", header = TRUE, sep = "\t") 
dF2[] 
par(mai=c(0,0,0.2,0),xaxs="i",yaxs="i") 
mapBubbles(dF2=getMap(), nameZSize="No.of.Documents", nameZColour="Country",oceanCol="lightblue", landCol="wheat", addLegend=FALSE 

所以,問題是你能幫助我解決了代碼,以繪製數據是否正確?

乾杯, 傑斯

+0

這可能是最好的,如果你堅持一個帳戶的計算器。 – BenBarnes

+0

我甚至不知道我有2個帳戶! –

回答

1

你需要更多的信息傳遞給mapBubbles功能,因爲您的數據幀不是SpatialPolygonsDataFrame。以下應工作(你LatLon可能被貼錯標籤):

mapBubbles(dF=dF2, nameZSize="No.of.Documents", 
    nameZColour="Country",oceanCol="lightblue", landCol="wheat", 
    addLegend=FALSE, nameX = "Lat", nameY = "Lon") 

以上,nameXnameY被傳遞給函數,以指示繪製的氣泡。此外,將數據幀dF2傳遞給參數dF,而不是調用getMap()

編輯:

我也很喜歡Andrie的答案與ggplot2(除其他事項外,空間比下面的圖形更好的使用),但既然你已經明確使用rworldmap發佈的其他問題,我想它適合堅持這個包。

World Map with bubbles

+0

這個作品很棒,是否有消除傳說或使它變小?當我放大歐洲的時候,這個傳說依然存在,而且價值觀也會重演,這可能會引起爭議! –

+0

爲避免繪製按國家顏色編碼的圖例,請在'mapBubbles'的參數中添加'addColourLegend = FALSE'。爲了讓圖例更小,看起來你可能需要調整'mapBubbles'函數或者在繪圖後通過調用addMapLegendBoxes來添加圖例。 – BenBarnes

+0

@JessSheasby,抱歉忘記包含您的用戶名,以便通知您。請參閱上面的評論:) – BenBarnes

6

您可以使用ggplot繪製這樣的:

enter image description here

重建數據:

dat <- read.table(text=" 
ISO3V10 Country 'No of Documents' Lat Lon 
ARG  Argentina 41   -64 -34 
AUS  Australia 224   133 -27 
CAN  Canada  426   -95 60 
IRL  Ireland 68   -8 53 
ITA  Italy    583   12.8333 42.8333 
NLD  Netherlands 327   5.75 52.5 
NZL  'New Zealand' 26   174 -41 
ESP  Spain    325   -4 40 
GBR  'United Kingdom' 2849    -2 54 
USA  'United States' 3162   -97 38 
", header=TRUE) 

負載包和情節:

library(ggplot2) 
library(maps) 

mdat <- map_data('world') 

str(mdat) 
ggplot() + 
    geom_polygon(dat=mdat, aes(long, lat, group=group), fill="grey50") + 
    geom_point(data=dat, 
      aes(x=Lat, y=Lon, map_id=Country, size=`No.of.Documents`), col="red") 
+0

當我使用上面的代碼時我得到這個錯誤信息:'eval(expr,envir,enclos)中的錯誤:object'long'not found'任何想法什麼是錯的? –

+1

@JessSheasby我剛剛在一個乾淨的R會話中運行此代碼,它適用於我。我很抱歉,但我不知道你的情況發生了什麼。 – Andrie

+0

仍然不能得到這個工作,雖然:( –