当前位置 : 主页 > 网页制作 > css >

如何将连续颜色图例添加到使用贴图制作的R贴图中

来源:互联网 收集:自由互联 发布时间:2021-06-13
我正在使用下面显示的R代码​​,它加载库地图和RColorBrewer,以创建一个世界地图,其中的国家/地区按人口等级进行颜色编码.正如您在下图所示,我使用的是绿色调色板,其中绿色越深,人口
我正在使用下面显示的R代码​​,它加载库地图和RColorBrewer,以创建一个世界地图,其中的国家/地区按人口等级进行颜色编码.正如您在下图所示,我使用的是绿色调色板,其中绿色越深,人口越多.

我想添加一个连续的颜色图例,显示完整的调色板,表示浅绿色=小人口和深绿色=大人口,但我找不到通过地图做到这一点的方法.你能告诉我在地图上添加连续颜色图例(或颜色键/颜色比例)的最简单方法是什么?

# Load libraries
library(maps)
library(RColorBrewer)

# Load world data
data(world.cities)

# Calculate world population by country
world.pop = aggregate(x=world.cities$pop, by=list(world.cities$country.etc),
                      FUN=sum)
world.pop = setNames(world.pop, c('Country', 'Population'))

# Create a color palette
palette = colorRampPalette(brewer.pal(n=9, name='Greens'))(nrow(world.pop))

# Sort the colors in the same order as the countries' populations
palette = palette[rank(-world.pop$Population)]

# Draw a map of the world
map(database='world', fill=T, col=palette, bg='light blue')
在库SDMTools中有功能legend.gradient

将此代码添加到代码的末尾应该会得到所需的结果:

# Draw a map of the world
map(database='world', fill=T, col=palette, bg='light blue')
x = c(-20, -15, -15, -20)
y = c(0, 60, 60, 0)
legend.gradient(cbind(x = x - 150, y = y - 30), 
                  cols = brewer.pal(n=9, name='Greens'), title = "TITLE", limits = "")

你将需要摆弄x& y坐标以使图例进入所需位置.

编辑

x和y坐标也会调整框的形状,因此我更改了代码,以便在仅更改legend.gradient函数中的数字时,框形状不会改变.以下是此代码应生成的内容

网友评论