难以在ggplot中设置地图的颜色比例。我需要灰度。非常感谢我出错的想法。我还想知道是否有更有效的方法将颜色变量输入ggplot(即将其附加到'强化'数据)?
library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region)) # using rows as a dummy variable
states$variable <- var$Freq[match(states$region,var$Var1)]
map <- ggplot(states, aes(x=long, y=lat)) +
geom_polygon(aes(group=group, fill=variable), col=NA,lwd=0)
map + scale_colour_gradient(low='white', high='grey20')
map + scale_colour_grey()
答案 0 :(得分:11)
您需要使用scale_fill_*
而不是scale_color_*
。对于多边形几何体,多边形的填充颜色与fill
美学相关联,而不是color
美学。通常,用于更改特定比例的详细信息的函数是scale_
aesthetic_name _
type_of_scale,例如scale_fill_gradient
。
答案 1 :(得分:3)
此代码适用于我。
library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region))
states$variable <- var$Freq[match(states$region,var$Var1)]
map <- ggplot(states, aes(x=long, y=lat,fill=variable,group=group)) + geom_polygon()
map + scale_fill_gradient(low='white', high='grey20')
处理离散变量问题的一种简单方法是创建一个&#34;假的&#34;使用调色板功能的连续调色板。请参阅以下示例。
定义调色板,这里我使用黑白代码的十六进制代码,但你可以使用任何颜色
gs.pal <- colorRampPalette(c("#FFFFFF","#000000"),bias=.1,space="rgb")
现在创建一些假数据
x <- rnorm(100)
dat <- data.frame(cbind(x))
dat$fac <- as.factor(sort(rep(1:5,20)))
dat$y <- x * as.numeric(dat$fac)
接下来用ggplot函数scale_*
类型_manual
绘制它,因为它的颜色
在您使用scale_colour_manual
但在您之上使用scale_fill_manual
ggplot(dat,aes(x=x,y=y,colour=fac))+geom_point()+scale_colour_manual(values=gs.pal(5))