【发布时间】:2019-09-30 16:47:50
【问题描述】:
我使用sf 库在R 中生成了许多地图,我希望有一个漂亮的图例。不幸的是,geom_sf() 的标准图例似乎是这些ugly looking boxes。我能在ggplot2 传说中找到关于调整形状的唯一 SO 帖子是here。
这里是使用guides(colour = guide_legend(override.aes = list(shape = 16)));然而,这似乎只适用于geom_point() 而不适用于geom_sf()。
除非有人可以提出改变图例对象形状的替代方法,否则我需要在 Inkscape 中设计一个自定义图例,并将其与各种地图对齐。
这是代码的 sn-p 以显示我已经尝试过的内容:
legend <- image_read_svg('https://svgshare.com/i/FDV.svg')
p1 <- ggplot() +
geom_sf(data=otherroads, size = .45, aes(color=SUFTYPABRV)) +
geom_sf(data=allroads, size = .55, aes(color=SUFTYPABRV)) +
scale_color_manual(values = plotcolors, guide = "legend") + theme_map() +
labs(title = "Sydney")
ggdraw() +
draw_plot(p1) +
draw_image(legend, width = 0.4, hjust = -0.75, vjust = 0.43)
在这种情况下,输出看起来不错;但是,这对我不起作用,因为它需要对每个情节进行手动调整。
我想要的是根据 ggplot 对象动态放置此图例的位置,这取决于我正在绘制的城市。
完整的代码(和数据)可以从 github 克隆:https://github.com/moldach/map-help.git
【问题讨论】: