我有一个7个国家/地区的清单,每个国家分别有一个特定的分数。使用此代码,色阶从最低分数(0.1367)开始,到最高分数(0.3760)结束。我希望标度从较低的值(例如0.08)开始,然后从较高的值(例如0.4)停止,因为例如0.1367仍然是一个相当不错的分数,但由于它是数据集中的最低分数,因此现在显示蓝色。
如何调整色标以从数据集中未包含的较低值开始?
这是我的代码:
library(rworldmap)
library(RColorBrewer)
d = read.table(text="
country score
Italy 0.3760
Belgium 0.1431
France 0.2028
Netherlands 0.1431
Australia 0.1411
Germany 0.1431
'United States' 0.1367
", header=T)
numCats <- 100
palette = colorRampPalette(c('blue','lightblue','green', 'yellow', 'red'))
(numCats)
dt <- joinCountryData2Map(d, joinCode="NAME", nameJoinColumn="country")
map18 = mapCountryData(dt, nameColumnToPlot="score",
catMethod="fixedWidth",numCats = numCats,colourPalette = palette, mapTitle =
"AHP Score Obtained",missingCountryCol = 'grey',addLegend=FALSE)
do.call(addMapLegend
,c(map18
,horizontal=TRUE
,legendWidth=0.5))
答案 0 :(得分:0)
您必须手动设置希望预先指定值的范围。完成此操作后,将您的范围划分为相等数量的类(在您的情况下,您有100个类,这意味着您需要101个数字或标签)以形成连续序列。
limits <- range(0.08, 0.40) # custom range
legend.limits <- seq(min(limits), max(limits), len = 101) # splitting to make continuous variable
然后我们在catMethod
函数中手动修改mapCountryData
以反映我们的自定义范围:
map18 <- mapCountryData(dt, nameColumnToPlot="score",
catMethod= legend.limits, # custom range for legend
numCats = numCats,
colourPalette = "rainbow", # using default colors
mapTitle = "AHP Score Obtained",
missingCountryCol = 'grey',
addLegend=FALSE)
do.call(addMapLegend, c(map18, horizontal = TRUE,
legendWidth = 0.5,
legendLabels = "limits"))
请注意,我还将colourPalette
参数更改为默认的Rainbow标度。您最初指定的palette
变量指定5种颜色,但是由于我们现在有100多个类,因此colourPalette
将需要使用默认值之一。