我希望能够为一手牌的国家绘制我自己的值(value)观。例如:中国、美国、英国、加拿大和俄罗斯。
我有自己的 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
这个想法是为国家
着色的世界地图,并且绘制的数据是文档数量
。
到目前为止我已经做到了:
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,因为这是我可以让它工作的唯一方法。
有人能告诉我代码哪里出了问题吗?
最佳答案
如果以下代码适合您,则文本文件的格式或将其读入 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")
如果有效,您应该检查您的 countryExData
对象(或 myData2
?从您的帖子中不清楚)它与上述对象之间的差异。如果您没有发现任何问题,请将 dput(head(countryExData))
的结果发布在您的原始帖子中。
关于RScript 用自己的值创建世界地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423025/