首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rworldmap颜色标度不连续

rworldmap颜色标度不连续
EN

Stack Overflow用户
提问于 2014-06-13 04:17:53
回答 2查看 4.5K关注 0票数 0

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

代码语言:javascript
复制
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)

然而,地图上填充的颜色并不是连续的。联合王国的颜色几乎与法国相同,尽管他们的价值观有很大不同。另外,中国和美国都有不同的颜色,尽管他们的价值观几乎是一样的。我认为颜色是填充作为分类值,而不是在一个连续的梯度尺度。将brewer.pal值从7更改为其他值没有帮助。我该怎么纠正呢?谢谢你的帮助。

编辑

添加dF的dput,这将有助于其他人复制数据框架

代码语言:javascript
复制
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))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-13 09:31:43

您的问题是因为您正在使用默认的catMethod来表示mapCountryData,即“分位数”。如果您将catMethod设置为“fixedWidth”,我认为您将得到一个更接近您想要的结果。

代码语言:javascript
复制
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod='fixedWidth')

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

代码语言:javascript
复制
colourPalette <- brewer.pal(5,'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod=c(0,20,40,60,80,100))

如果你愿意的话,你可以添加一个更详细的图例。

代码语言:javascript
复制
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 ))

希望这能有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2014-06-13 05:19:04

阴谋背后的原因是,在法国之后的下一个值是英国加上你有10个国家,你把它们分成7个类别,这使法国和英国处于相同的颜色类别。默认情况下,mapCountryData分为7类进行绘图.

由代码编写的图表

试着专门提供分类。试着跟着..。

代码语言:javascript
复制
colourPalette <- brewer.pal(nrow(dF),'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,numCats=nrow(dF))

在引入分类后编写的图表

更新

如果您只希望较低的值被着色为红色(在本例中为法国)

代码语言:javascript
复制
library(fields)
colourPalette = two.colors(n=max(dF$value)-min(dF$value)+1, start="red", middle='yellow', end="dark green", alpha=1.0)
colourPalette = colourPalette[dF$value - min(dF$value) + 1]
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette, numCats=nrow(dF))

产出将

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24197631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档