21

难以在 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()

在此处输入图像描述

4

2 回答 2

14

你需要使用scale_fill_*而不是scale_color_*. 对于多边形几何形状,多边形的填充颜色与fill美学有关,而不是与color美学有关。一般来说,用于改变特定比例细节的函数是scale_审美名称_type_of_scale,例如scale_fill_gradient

于 2012-09-01T17:46:58.290 回答
4

这段代码对我有用。

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')

处理离散变量问题的一种简单方法是使用调色板功能创建“假”连续调色板。请参见下面的示例。

定义调色板,这里我使用了黑色和白色的十六进制代码,但你可以使用任何颜色

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))
于 2012-09-01T18:16:26.077 回答