【问题标题】:ggplot2: how to assign a graduated color legend and add shaded relief background to a mapggplot2:如何分配渐变颜色图例并向地图添加阴影浮雕背景
【发布时间】:2016-05-24 04:44:18
【问题描述】:

使用这个data.frame (you can download it from here) 和下面的代码

library(ggplot2)
library(scales)
library(ggmap)

setwd("<path to df.csv file>")
df <- read.csv("df.csv")

ggplot(df, aes(x=long, y= lat)) + 
  geom_polygon(aes(x=long, y= lat, group= Site1, fill = mean),
               color = "black",
               size = 0.1)+
  scale_fill_distiller(name=bquote(atop("Mean Annual",
                                        "Concentration" ~ (mg~L^{-1}))),
                       palette = 
                         "OrRd"
                       , 
                       breaks = pretty_breaks(n = 5),
                       direction = 1)+
  facet_wrap(~year, ncol=4)+
  theme_nothing(legend = TRUE)

我得到了这个情节

我想:

1) 为我的绘图添加阴影浮雕背景。

2) 创建一个渐变的颜色图例,我可以在其中分配值的中断(例如 0.02-0.07、0.07-0.12、0.12、0.17..)

我可以通过在图例中分配中断来在基本 R 中做到这一点。例如

q <- cut(df$ParameterA, breaks=c(0, 0.02, 0.20, 0.07, 0.12, 0.17, 0.22, 0.25)), include.lowest=T, labels=labs)
legend(legend = c("<0.02", "0.02-0.07", "0.07-0.12", "0.12-0.17", "0.17-0.22", ">0.22"), fill = levels(q))

但是,我不知道如何使用 ggplot2 来做到这一点

您的建议将不胜感激。

【问题讨论】:

  • 我不确定您所说的“阴影浮雕背景”是什么意思。那么颜色渐变?以何种方式解脱?在整个情节,还是每帧?
  • @MikeWise 谢谢迈克。请按照此链接查找阴影地形图的示例。我希望它是每帧的背景

标签: r ggplot2 maps legend


【解决方案1】:

要创建分级颜色图例,您需要在调用ggplot 之前将数据框中的数据cut,如下所示:

df$mean_cut <- cut(df$mean, 
                   c(0, 0.02, 0.20, 0.07, 0.12, 0.17, 0.22, 0.25), 
                   include.lowest = TRUE)

我在你的剪辑breaks 中添加了一个, Inf,因为我注意到你的 2011 刻面的底部多边形没有被分配值。

然后您可以使用新的数据列进行填充:

ggplot(df, aes(x=long, y= lat)) + 
geom_polygon(aes(x=long, y= lat, group= Site1, fill = mean_cut),
             color = "black",
             size = 0.1)

那么你需要使用像scale_fill_brewer这样的离散量表:

  scale_fill_brewer(name=bquote(atop("Mean Annual",
                                 "Concentration" ~ (mg~L^{-1}))),
                    type = "seq",
                    palette = "OrRd",
                    direction = 1)

我认为您可以使用 ggmap 相当轻松地添加底图,但我不知道您的数据的位置,因此很难举个例子。

请参阅https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/ggmap/ggmapCheatsheet.pdf 获取有关将底图添加到绘图的教程。大概是这样的:

myMap <- get_map(location, source, maptype)
ggmap(myMap) +
  geom_polygon(...) +
  scale_fill_brewer(...) +
  facet_wrap(...) +
  theme_nothing()

【讨论】:

  • 感谢您的时间和帮助。根据您的建议,我尝试使用下面的代码添加地形底图,但它不起作用 myLocation
  • 你的多边形坐标不是纬度/经度,是吗?
  • 不,他们在新西兰横轴墨卡托 NZTM 2000。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2017-12-06
  • 2015-12-25
相关资源
最近更新 更多