【问题标题】:Small ggplot2 plots placed on coordinates on a ggmap放置在 ggmap 坐标上的小 ggplot2 图
【发布时间】:2017-07-31 08:43:07
【问题描述】:

我想先用 ggmap 绘制一个特定区域,以经纬度为轴。

然后,考虑到它们的经度和纬度,我想将小的 ggplot2 图放在特定位置。这些可以是具有最小主题的条形图。

我的数据库可能有以下列:

1. town
2. longitude
3. latitude
4. through 6. value A, B, C

我生成一个图(伪代码)

p <- ggmap(coordinates) 

我有我最小的 ggplot2 设计

q<-ggplot2()+geom_bar(....)+ ... x-axis null y axis null minimal template

如何将这两种设计结合起来,以使 ggmap 具有最小的最小 ggplot 图,强加在地图的特定坐标上?

【问题讨论】:

标签: r ggplot2 ggmap


【解决方案1】:

这是我使用饼图作为散点图上的点所做的。您可以使用相同的概念将条形图放置在特定纬度/经度坐标的地图上。

R::ggplot2::geom_points: how to swap points with pie charts?

需要进一步更新。使用的一些代码是从另一个答案中缩写的,该答案已被删除。如果您通过搜索引擎找到此答案,请发表评论,我会尽快补充。


更新:

主要使用您的答案中的改编代码,但我不得不更新几行。

p <- ggmap(Poland) + coord_quickmap(xlim = c(13, 25), ylim = c(48.8, 55.5), expand = F)

此更改可以更好地投影并消除有关重复比例的警告。

df.grobs <- df %>% 
  do(subplots = ggplot(., aes(1, value, fill = component)) + 
       geom_col(position = position_dodge(width = 1), 
                alpha = 0.75, colour = "white") +
       geom_text(aes(label = round(value, 1), group = component), 
                 position = position_dodge(width = 1),
                 size = 3) +
       theme_void()+ guides(fill = F)) %>% 
  mutate(subgrobs = list(annotation_custom(ggplotGrob(subplots), 
                                           x = lon-0.5, y = lat-0.5, 
                                           xmax = lon+0.5, ymax = lat+0.5))) 

在这里,我明确指定了 geom_col 的闪避宽度,因此我可以将其与 geom_text 匹配。我使用round(value, 1) 作为标签美学,它自动从subplots = ggplot(...) 调用继承xy 美学。我还手动将大小设置为非常小,以便标签适合,但随后我将每个 subgrob 的整体边界框从每个方向从 0.35 增加到 0.5。

df.grobs %>%
  {p + 
    .$subgrobs + 
    geom_text(data=df, aes(label = name), vjust = 3.5, nudge_x = 0.065, size=2) + 
    geom_col(data = df,
             aes(Inf, Inf, fill = component), 
             colour = "white")}

我在这里所做的唯一改变是为了“幽灵”geom_col 的美学。当它们设置为 0,0 时,它们根本没有被绘制,因为那不在 x 和 y 限制内。通过使用 Inf,Inf,它们被绘制在最右上角,这足以使它们不可见,但仍为图例绘制。

【讨论】:

  • 谢谢布赖恩,我重做了。我有一个小问题,你能帮帮我吗?我无法在标签问题上正确放置标签?我将放置代码然后您可以将其用作您的答案,以便我可以将其标记为答案?
  • 这太棒了,你太棒了!我必须学习它,已经尝试将甜甜圈作为量规,尝试过它......它在很大程度上填补了缺失的 subplot() 。谢谢你。我相信其他人也会从您的想法中受益匪浅。
  • 是否可以对沿 ggmap 的折线图做同样的事情?
  • @Ariel,是的,只需更改较大块中的代码即可。 (geom_colgeom_line 等)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2017-01-04
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多