使用自己的值创建世界地图的RScript

时间:2012-05-02 23:13:26

标签: r

我希望能够为一个充满国家的手绘制自己的价值观。例如:中国,美国,英国,加拿大和俄罗斯

我有自己的txt文件,有3列 - ISO3V10,国家和文件编号。

ISO3V10 Country              No of Documents
CAN     Canada               30
CHN     China                20
RUS     Russia               10
GBR     United Kingdom       38
USA     United States        50

我们的想法是为Country着色世界地图,正在绘制的数据为No of Documents

到目前为止,我已经这样做了:

myData2 <- read.delim("noofdocuments.txt",header=T, sep='\t')
names(myData2)
myData2[]

jessdata <- data.frame(myData2=c("China", "United States", "United Kingdom", 
                                 "Russia", "Canada"))
sPDF <- joinCountryData2Map(jessdata, 
                            joinCode = "NAME", 
                            nameJoinColumn = "myData2")
par(mai=c(0,0,0.2,0),xaxs="i",yaxs="i")
mapCountryData(sPDF, nameColumnToPlot="REGION")

理想情况下,我希望sPDF成为:

sPDF <- joinCountryData2Map(countryExData, 
                            joinCode = "ISO3", nameJoinColumn = "ISO3V10")

也适用于REGION:

mapCountryData(sPDF, nameColumnToPlot="No.of.Documents")

我已经尝试了所有可行的方法来实现这一点,这就是为什么我将REGION作为nameColumnToPlot,因为这是我能够让它工作的唯一方法。

有人能告诉我代码中哪里出错了吗?

1 个答案:

答案 0 :(得分:4)

如果以下代码适合您,则可能是文本文件的格式或将其读入R的方式有问题。

library(rworldmap)

countryExData<-read.table(text="
ISO3V10\tCountry\tNo of Documents
CAN\tCanada\t30
CHN\tChina\t20
RUS\tRussia\t10
GBR\tUnited Kingdom\t38
USA\tUnited States\t50"
,sep="\t",header=TRUE)

# > countryExData
#   ISO3V10        Country No.of.Documents
# 1     CAN         Canada              30
# 2     CHN          China              20
# 3     RUS         Russia              10
# 4     GBR United Kingdom              38
# 5     USA  United States              50

sPDF <- joinCountryData2Map(countryExData, 
                            joinCode = "ISO3", nameJoinColumn = "ISO3V10")
# 5 codes from your data successfully matched countries in the map
# 0 codes from your data failed to match with a country code in the map
# 241 codes from the map weren't represented in your data

par(mai=c(0,0,0.2,0),xaxs="i",yaxs="i")
mapCountryData(sPDF, nameColumnToPlot="No.of.Documents")

World map with number of docs

如果有效,您应该检查一下countryExData对象(或myData2?从您的帖子中不清楚),以了解它与上述对象之间的差异。如果您没有发现任何错误,请在原始帖子中发布dput(head(countryExData))的结果。