【问题标题】:A custom legend unrelated to data in ggplot与ggplot中的数据无关的自定义图例
【发布时间】:2022-06-16 16:05:21
【问题描述】:

是否可以在 ggplot 中创建与数据无关的自定义图例(就像您使用 Photoshop 添加它一样)?

library(ggplot2)
library(ggmap)

# ================ Mapping =================== 
bas = get_stamenmap(c(-6.3, 53.25, -6, 53.40), zoom=7, maptype="terrain-background")
(mp <- ggmap(bas))


locs <-  data.frame( lon_dec = c(-6.04015), 
                     lat_dec = c( 53.3345))

(big_map <- mp +
    geom_point(data=locs, aes(x=lon_dec, y=lat_dec))  +
    annotate(geom = "text", x = -6.04015, y = 53.3395, label = "1,2,3"))

代码给出了下面的图(除了我使用 Photoshop 手动添加了图例):

我想要地图旁边的图例说:

1-A
2- B
3-C

【问题讨论】:

  • @JonSpring 刚刚编辑了代码,可以从代码中删除边距。
  • 您希望图例是什么样的?一个简单的选择是添加另一个带有标签 label = "1- A\n2- B\n3- C" 的文本注释,但也许您还有其他想法。
  • @JonSpring 我没有什么特别的想法。只是一个关于每个数字代表什么的指南就可以了。我发现使用注释有点繁琐,但也许我不知道如何正确地做到这一点。所以我很想知道你的解决方案。
  • @JonSpring 我用 Photoshop 处理过的图例更新了图像。我无法使用注释将图例放在地图之外。

标签: r ggplot2


【解决方案1】:

要获得这样的自定义图例,将其添加为自定义注释可能是最简单的。您需要切换到 CoordCartesian 并关闭剪辑才能执行此操作。

(big_map <- mp +
    geom_point(data=locs, aes(x=lon_dec, y=lat_dec))  +
    annotate(geom = "text", x = -6.04015, y = 53.3395, label = "1,2,3")+
    theme(plot.margin = margin(20, 100, 20, 20)))

big_map$coordinates <- coord_cartesian(clip = "off")

big_map + annotation_custom(
  grid::textGrob(x = 1.1, y = 0.5, label = "1 - A\n2 - B\n3 - C"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2021-08-14
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多