rworldmap色标不连续

rns*_*nso 0 plot dictionary r rworldmap

我使用以下示例数据和代码来生成世界地图:

dF = read.table(text="
country, value
'France',  7
'United Kingdom',  64
'Italy',  68
'Sweden',  82
'Nepal',  85
'Japan',  86
'Germany',  86
'United States',  93
'China',  94
'Nigeria',  95"
, header=TRUE, sep=",")

library(rworldmap)

sPDF <- joinCountryData2Map(dF,
                            joinCode = "NAME",
                            nameJoinColumn = "country",
                            verbose = TRUE)

library(RColorBrewer)
colourPalette <- brewer.pal(7,'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette)
Run Code Online (Sandbox Code Playgroud)

但是,地图上填充的颜色不是连续的.虽然它们的价值观非常不同,但英国的颜色几乎与法国相同.中国和美国也充满了不同的颜色,尽管它们的价值几乎相同.我认为颜色是按分类值填充的,而不是连续的梯度刻度.将brewer.pal值从7更改为其他值无济于事.我怎么能纠正这个?谢谢你的帮助.


编辑

添加其中的dput dF将有助于其他人重现数据帧

structure(list(country = c("France", "United Kingdom", "Italy", 
"Sweden", "Nepal", "Japan", "Germany", "United States", "China", 
"Nigeria"), value = c(7L, 64L, 68L, 82L, 85L, 86L, 86L, 93L, 
94L, 95L)), .Names = c("country", "value"), class = "data.frame", row.names = c(NA, 
-10L))
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 5

您的问题是因为您正在使用mapCountryData的默认catMethod,即'quantiles'.如果你将catMethod设置为'fixedWidth',我想你会得到一个更接近你想要的结果.

mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod='fixedWidth')
Run Code Online (Sandbox Code Playgroud)

或者您可以使用例如catMethod = c(0,20,40,60,80,100)指定类别中断

colourPalette <- brewer.pal(5,'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod=c(0,20,40,60,80,100))
Run Code Online (Sandbox Code Playgroud)

然后,如果您愿意,可以添加更详细的图例.

mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,20,40,60,80,100), addLegend=FALSE)

do.call( addMapLegend, c( mapParams
                          , legendLabels="all"
                          , legendWidth=0.5 ))
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.