【问题标题】:RScript to create World Map with own valuesRScript 用自己的值创建世界地图
【发布时间】:2012-05-02 23:13:25
【问题描述】:

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

我有自己的 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,因为这是我让它也能正常工作的唯一方法。

谁能告诉我代码哪里出错了?

【问题讨论】:

  • 您的示例不是独立的,您应该在开头添加“library(rworldmap)”。此外,您可以在 myData2 上使用函数 dput() 以使读者更容易尝试您的示例。

标签: r


【解决方案1】:

如果以下代码适合您,那么您的文本文件的格式或将其读入 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)) 的结果发布在您的原帖中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-19
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多