【问题标题】:R - Add legend to ggmap when no data is availableR - 当没有数据可用时将图例添加到 ggmap
【发布时间】:2016-03-12 08:43:06
【问题描述】:

我正在尝试弄清楚如何使用 ggmap/ggplot 显示包含图例的地图。

目前为止:

library(ggmap)
library(RColorBrewer)
bbox <- c(8.437526,47.328268,8.605915,47.462160)
map.base <- get_map(maptype='toner',source = 'stamen',location = bbox)
ggmap(map.base) +
geom_blank() +
ggtitle("2015-09-21 06:00:00 CEST") +
scale_colour_manual(values = rev(brewer.pal(7,"Spectral")), drop = FALSE)+
scale_size_manual(values=c(1:7), drop = FALSE) +
guides(color=guide_legend(title='Mean Delay [s]'), size = guide_legend(title='Mean Delay [s]'))+
ggsave(file=paste("map_","2015-09-21 060000",".png",sep=""),dpi = 100)
dev.off()

这会在正确的边界框中生成正确的地图。但即使我已经指定:“scale_colour_manual”和“scale_size_manual”与“drop = FALSE”,也没有出现图例。不显示数据时如何显示图例?

总体意图是创建时间序列中给定间隔的单个地图。现在的问题是某些区间没有数据,因此地图显示时没有比例尺。如果地图没有比例尺,则地图的尺寸​​会不同,从而无法从不同的地图中创建电影。这就是为什么我需要能够创建没有数据但显示图例的地图。

谢谢。

【问题讨论】:

  • 您看不到图例,因为您没有在geomaes 中调用一个图例。 See here for an example 关于如何手动将图例添加到绘图中。
  • @Jaap 谢谢你的评论。 @rawr 你什么意思?
  • This joran 在 R 标签上非常活跃,看到另一个 Joran 回答 R 问题真是令人惊讶。
  • 哦! Jorans 似乎以某种神秘的方式被 R 所吸引 :) 感谢您提供信息。

标签: r ggplot2 ggmap


【解决方案1】:

考虑到 Jaap 的评论,我必须在 aes 中调用一个图例,我已经能够通过以下代码实现我想要的:

library(ggmap)
library(RColorBrewer)
bbox <- c(8.437526,47.328268,8.605915,47.462160)
map.base <- get_map(maptype='toner',source = 'stamen',location = bbox)
ggmap(map.base) +
geom_point(aes(x=0,y=0, color=cut(0,breaks = c(-Inf,0,60,120,240,300,360,Inf),right = FALSE), size=cut(0,breaks = c(-Inf,0,60,120,240,300,360,Inf),right = FALSE))) +
ggtitle("2015-09-21 06:00:00 CEST") +
scale_colour_manual(values = rev(brewer.pal(7,"Spectral")), drop = FALSE)+
scale_size_manual(values=c(1:7), drop = FALSE) +
guides(color=guide_legend(title='Mean Delay [s]'), size = guide_legend(title='Mean Delay [s]')) +
ggsave(file=paste("map_","2015-09-21 060000",".png",sep=""),dpi = 100)
dev.off()

我知道这不是最优雅的方式,但它现在有效。

我基本上在要显示的边界框之外创建一个虚拟点。然后我给这个点一个值,它根据我想要的中断进行切割,然后相应地着色和调整大小。请记住将 x 和 y 的值放在边界框之外的 aes 中。 欢迎提供更好的解决方案。

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2016-06-22
    • 2018-07-24
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2016-06-07
    相关资源
    最近更新 更多