如何在ggplot中的地图上绘制等宽的矩形

k_wittdillon

我有两个相关指标的全球人口数据,并希望在地图上的每个位置绘制迷你条形图。由于每个人口只需要两个条形图,并且它们的比例都相似,因此我打算使用geom_rect()绘制它们。但是,即使宽度相同,两个条形之间的条形宽度也不一致。在此处输入图片说明

这是我为此使用的简化R代码:

library("ggplot2")
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library("rgeos")

world <- ne_countries(scale = "medium", returnclass = "sf")

pop_data <- data.frame(long=c(-63,-68,-108,86,64,129,114,174,143,90,64,-21,40,-4,38.7),
                   lat=c(-23,3,29,51,64,63,32,-41,-4,24,26,64,61,40,39),
                   measA=c(10,10,10,10,10,10,10,10,10,10,10,10,10,10,10),
                   measB=c(10,10,10,10,10,10,10,10,10,10,10,10,10,10,10))
ggplot(data = world) +
  geom_sf()+
  geom_rect(data = pop_data,fill="blue",
            aes(xmin = long-2,
                xmax = long-1,
                ymin = lat,
                ymax = lat+measA))+
  geom_rect(data = pop_data,fill="red",
            aes(xmin = long+1,
                xmax = long+2,
                ymin = lat,
                ymax = lat+measB))+
  theme(axis.title.x=element_blank(),axis.title.y=element_blank())

在最终绘图中,条形图的高度将不同,但这只是为了说明宽度差异。谁能解释为什么宽度不同以及如何解决此问题?我也欢迎在地图上制作简单迷你条形图的其他解决方案。我确实看到了其他制作迷你条形图的解决方案,但是其中大多数解决方案都使用了不再起作用的ggplot函数。

chemdork123

我建议您选择一个画一条线并通过size=控制宽度的几何图形-这可能会使您看起来更加一致。正如其他人所提到的,尝试用不同的图形输出,因为渲染器jpeg()png()pdf()可能会有所不同。这是带有geom_segment()和的两个示例geom_linerange()请注意,为了简化调用并避免重复几何图形,建议将您的pop_data数据框并收集/熔化/ pivot_longer ...measA和和measB列放在一起ggplot()您会看到我这样做了geom_linerang(),但是由于躲避不能与geom_segment一起正常使用,我向您展示了一个没有修改的例子pop_data

geom_segment()

ggplot(data = world) +
  geom_sf() +
  geom_segment(
    data=pop_data, color='blue',
    aes(x= long-1, xend=long-1, y= lat, yend=lat+measA),
    size=1.2) +
  geom_segment(
    data=pop_data, color='red',
    aes(x= long+1, xend=long+1, y= lat, yend=lat+measB),
    size=1.2) +
  theme(axis.title.x=element_blank(),axis.title.y=element_blank())

在此处输入图片说明

geom_linerange()与pop_data的收集

如前所述,我pop_data在这里使用dplyr和进行修改tidyr::gather(),然后只需调用一次即可geom_linerange()我更喜欢此解决方案,但结果非常相似:

pop_data1 <- pop_data %>%
  gather('measure', 'pop', -c(long,lat))

ggplot(data = world) +
  geom_sf() +
  geom_linerange(
    data=pop_data1,
    aes(x= long, ymin= lat, ymax=lat+pop,
      color=measure, group=measure),
    size=1.2, position=position_dodge(5)) +
  scale_color_manual(values=c('red','blue')) +
  theme(axis.title.x=element_blank(),axis.title.y=element_blank())

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在地图上绘制多个圆形和矩形?

来自分类Dev

如何在ImageView中的图像位图上绘制矩形

来自分类Dev

如何在数据库中绘制离线地图和在地图上绘制标记

来自分类Dev

Android如何在地图上绘制圆圈

来自分类Dev

如何在地图上删除绘制路线

来自分类Dev

如何在栅格地图上绘制值?

来自分类Dev

如何在ggplot2地图上绘制条形图

来自分类Dev

如何在Google地图上以距用户输入点已定义的距离(米)绘制多边形(矩形)

来自分类Dev

如何在Google地图上以距用户输入点已定义的距离(米)绘制多边形(矩形)

来自分类Dev

无法获得地图上绘制矩形的边界

来自分类Dev

在R中,如何使用ggplot在欧洲地图上绘制物品的位置及其来源?

来自分类Dev

如何在新的位图上绘制已知的矩形大小?

来自分类Dev

如何在kibana中在地图上实时绘制地理坐标

来自分类Dev

如何在D3.js中的地图上绘制经纬度对

来自分类Dev

如何在android中通过json数组在谷歌地图上绘制折线?

来自分类Dev

如何在空间地图上绘制热图

来自分类Dev

如何在谷歌地图上动态绘制折线

来自分类Dev

如何在地图上绘制标记以获得更好的性能

来自分类Dev

如何在传单地图上打印/显示/绘制MultiPolygon GeoJSON

来自分类Dev

如何在Google地图上删除绘制的多边形

来自分类Dev

Python:如何在Cartopy地图上的特定点绘制散点图?

来自分类Dev

如何在谷歌地图上动态绘制折线

来自分类Dev

如何在空间地图上绘制热图

来自分类Dev

如何在Google地图上绘制SpatialLinesDataFrame特征图

来自分类Dev

如何在Android的Google地图上绘制自由手形

来自分类Dev

如何在Google地图上绘制静态目标圆?

来自分类Dev

如何在MATLAB中绘制矩形

来自分类Dev

Java:如何在JFrame中绘制矩形?

来自分类Dev

如何在python中绘制矩形?

Related 相关文章

  1. 1

    如何在地图上绘制多个圆形和矩形?

  2. 2

    如何在ImageView中的图像位图上绘制矩形

  3. 3

    如何在数据库中绘制离线地图和在地图上绘制标记

  4. 4

    Android如何在地图上绘制圆圈

  5. 5

    如何在地图上删除绘制路线

  6. 6

    如何在栅格地图上绘制值?

  7. 7

    如何在ggplot2地图上绘制条形图

  8. 8

    如何在Google地图上以距用户输入点已定义的距离(米)绘制多边形(矩形)

  9. 9

    如何在Google地图上以距用户输入点已定义的距离(米)绘制多边形(矩形)

  10. 10

    无法获得地图上绘制矩形的边界

  11. 11

    在R中,如何使用ggplot在欧洲地图上绘制物品的位置及其来源?

  12. 12

    如何在新的位图上绘制已知的矩形大小?

  13. 13

    如何在kibana中在地图上实时绘制地理坐标

  14. 14

    如何在D3.js中的地图上绘制经纬度对

  15. 15

    如何在android中通过json数组在谷歌地图上绘制折线?

  16. 16

    如何在空间地图上绘制热图

  17. 17

    如何在谷歌地图上动态绘制折线

  18. 18

    如何在地图上绘制标记以获得更好的性能

  19. 19

    如何在传单地图上打印/显示/绘制MultiPolygon GeoJSON

  20. 20

    如何在Google地图上删除绘制的多边形

  21. 21

    Python:如何在Cartopy地图上的特定点绘制散点图?

  22. 22

    如何在谷歌地图上动态绘制折线

  23. 23

    如何在空间地图上绘制热图

  24. 24

    如何在Google地图上绘制SpatialLinesDataFrame特征图

  25. 25

    如何在Android的Google地图上绘制自由手形

  26. 26

    如何在Google地图上绘制静态目标圆?

  27. 27

    如何在MATLAB中绘制矩形

  28. 28

    Java:如何在JFrame中绘制矩形?

  29. 29

    如何在python中绘制矩形?

热门标签

归档