用ggplot2在地图上提取多边形的颜色

时间:2016-11-19 17:47:51

标签: r dictionary ggplot2 colors

我正试图用ggplot2绘制在法国地图上用铅笔命名铅笔的不同方法。对于法国96个部门中的每个部门,我都有一个项目和与此项目相关的分数。我没有问题根据他们的部门在地图上绘制项目,但我无法找到一种方法来使每个多边形的颜色根据其相关分数而变化。我的数据是here。生成地图的代码如下:

library(ggplot2)
library(scales)
library(Cairo)

#open data
plotDatafr = read.table("plotDatafr.txt", header=T, sep="\t", quote="", dec=".")
g <- ggplot() + 
geom_polygon(data = plotDatafr, aes(x=long, y = lat, group = group, fill=item), alpha=0.8, colour = "black") + 
scale_fill_manual(values = c("#009E73", "#F0E442", "#0072B2", "#D55E00"), na.value=NA) + 
theme_nothing(legend = TRUE) +
coord_map() #avoid distorsion
ggsave(g, filename = "crayon_euro.png", scale=1) #save for futher use

我尝试使用“scale_fill_distiller”命令,但是使用这样的命令我只能绘制单个项目的属性,并且我放弃了它们给定的颜色,例如:

g <- ggplot() + 
geom_polygon(data = plotDatafr, aes(x = long, y = lat, group = group, fill = score), colour = "black", alpha = 0.8) +
scale_fill_distiller(palette = "Purples", breaks = pretty_breaks(n = 9), labels = percent, direction = 1, "", guide=FALSE) +
guides(fill = guide_legend(reverse = TRUE, override.aes = list(alpha = 1))) +
theme_nothing(legend = TRUE) + 
coord_map() #avoid distorsion
ggsave(g, filename = "crayon_euro.png", scale=1) #save for futher use

有没有人知道如何根据数值改变不同的多边形阴影?我无法想办法在同一时间组合scale_fill_distiller和scale_fill_manual。

2 个答案:

答案 0 :(得分:0)

您可以使用scale_fill_gradient代替aes(fill)调整plotDatafr$score

#open plotting data
plotDatafr = read.table("plotDatafr.txt", header=T, sep="\t", quote="", dec=".")

# make mapping data object
fr <- map_data("france")

# plot
ggplot(fr, aes(x=long, y = lat, group = group)) + 
    geom_polygon(data = plotDatafr, aes(fill=score), alpha=0.8, colour = "black") + 
    scale_fill_gradient(low = "yellow", high = "blue", na.value=NA) + 
    coord_map()

enter image description here

scale_fill_distiller专为离散数据而设计,因此在使用之前,您必须以某种方式对plotDatafr$score进行合并。

答案 1 :(得分:0)

@Haboryme上面给出的答案完美无缺!诀窍是用&#34;得分&#34;设置alpha。直接在aes()的{​​{1}}中,也就是说:

geom_polygon

相关问题