为世界地图分配专门定义的色标
Assigning a Specifically Defined Color Scale to a World Map
我有 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))
您必须手动设置要预先指定值的范围。这样做之后,将你的范围分成相等数量的 类(在你的情况下你有 100,这意味着你想要 101 个数字或标签)以形成一个连续的序列。
limits <- range(0.08, 0.40) # custom range
legend.limits <- seq(min(limits), max(limits), len = 101) # splitting to make continuous variable
然后我们手动修改 mapCountryData
函数中的 catMethod
以反映我们的自定义范围:
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
参数更改为默认的彩虹比例。您最初指定了指定 5 种颜色的 palette
变量,但因为我们现在有 100 多种 类,colourPalette
将需要使用其中一种默认值。
我有 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))
您必须手动设置要预先指定值的范围。这样做之后,将你的范围分成相等数量的 类(在你的情况下你有 100,这意味着你想要 101 个数字或标签)以形成一个连续的序列。
limits <- range(0.08, 0.40) # custom range
legend.limits <- seq(min(limits), max(limits), len = 101) # splitting to make continuous variable
然后我们手动修改 mapCountryData
函数中的 catMethod
以反映我们的自定义范围:
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
参数更改为默认的彩虹比例。您最初指定了指定 5 种颜色的 palette
变量,但因为我们现在有 100 多种 类,colourPalette
将需要使用其中一种默认值。