1

我有一个 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))

worldmap_image

4

1 回答 1

1

您必须手动设置要预先指定值的范围。之后,将您的范围分成相等数量的类(在您的情况下,您有 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参数更改为默认的彩虹比例。您最初指定了palette指定 5 种颜色的变量,但由于我们现在有 100 多个类,colourPalette因此需要使用其中一种默认值。

于 2018-09-26T14:45:42.067 回答