在ggplot中指定地图的颜色比例

geo*_*ory 17 r ggplot2

难以在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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Pau*_*tra 11

你需要使用scale_fill_*而不是scale_color_*.对于多边形几何形状,多边形的填充颜色与fill美学相关联,而不是color美学.通常,用于改变特定比例的细节的函数是scale_aesthetic_name _type_of_scale,例如scale_fill_gradient.

  • 我也这么认为,但我得到了"错误:连续值提供给离散比例". (3认同)
  • 您需要使用连续缩放,例如`scale_fill_gradient`. (3认同)

emh*_*art 6

这段代码对我有用。

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')
Run Code Online (Sandbox Code Playgroud)

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

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

gs.pal <- colorRampPalette(c("#FFFFFF","#000000"),bias=.1,space="rgb")
Run Code Online (Sandbox Code Playgroud)

现在创建一些假数据

x <- rnorm(100)
dat <- data.frame(cbind(x))
dat$fac <- as.factor(sort(rep(1:5,20)))
dat$y <- x * as.numeric(dat$fac)
Run Code Online (Sandbox Code Playgroud)

接下来在本例中使用 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))
Run Code Online (Sandbox Code Playgroud)