使用 ggplotly 的地图显示不正确(R)

Posted

技术标签:

【中文标题】使用 ggplotly 的地图显示不正确(R)【英文标题】:Map using ggplotly not showing correctly (R) 【发布时间】:2019-02-06 09:40:22 【问题描述】:

我使用 ggplot 制作了一张地图,并使用 ggplotly 绘制了它。

当它在 ggplot 中时,它看起来像这样:

但是用ggplotly显示的时候是这样的:

正如您所看到的,各个区域有点乱七八糟,没有清晰的边界,而且填充有点沙哑,好像是很多线条而不是填充。此外,工具提示大部分都说“trace 11”之类的内容,偶尔会显示相关数据。

这是我正在使用的代码的核心:

random_map <- ggplot()  +
  geom_map(data = random_data, aes(map_id = random_data$ï..CCG, fill = random_data$Number),  
      map = CCGshape) +
  geom_polygon (data = CCGshape, aes(x = long, y = lat, group = group),
      colour = "azure4", size = 0.01, fill = NA) +
  expand_limits(x = CCGshape$long, y = CCGshape$lat) +
  coord_equal ()

random_plotly <- ggplotly(random_map)

我使用的 shapefile 是 here。

这是我正在使用的数据的头部:

structure(list(Number = c(1, 0.4, 0.9, 0.3, 0.3, 0.7), 
CCG = c("NHS Airedale, Wharfedale and Craven CCG", 
"NHS Barnsley CCG", "NHS Bassetlaw CCG", "NHS Bradford Districts CCG", 
"NHS Calderdale CCG", "NHS Bradford City CCG")), .Names = c("Number", 
"CCG"), row.names = c(NA, 6L), class = "data.frame")

任何想法我做错了什么?

【问题讨论】:

【参考方案1】:

plotly 似乎不支持 geom_map(据我所知)。相反,看看here。有一个包sf 描述了一个名为geom_sf 的新geom,它可能会解决您的问题。 plotly 网站提供了支持here 的geom 的示例。

可能还值得注意的是,ggplotly 是一种解决方法,在我看来,ggplot 的语法比 plotly 的更清晰。话虽如此,如果您希望情节在反应式上下文中运行良好,最好按照情节希望的方式进行,即包含在 these 教程之一中的内容。

【讨论】:

【参考方案2】:

根据@bk18 的建议和plotly website,我做了以下简单示例。我在您发布的链接中使用了 shapefile,所以我认为它可以绘制您所追求的地图。我已经用ccg18cd字段随意填充了,但是你可以随意改变填充。

library(plotly)
library(sf)

ccg <- sf::st_read("Clinical_Commissioning_Groups_April_2018_Ultra_Generalised_Clipped_Boundaries_in_England.shp")

ccg_plot <- ggplotly(ggplot(ccg) + geom_sf(aes(fill = ccg18cd)))

这将生成以下绘图,带有标记的工具提示并填充了多边形。

【讨论】:

谢谢,这是一个非常有用的例子!

以上是关于使用 ggplotly 的地图显示不正确(R)的主要内容,如果未能解决你的问题,请参考以下文章

如何修复在 Linux/Fedora 31 上的 R 中未正确显示的度数符号

如何使用 R markdown 将 ggplot2 图形正确渲染成单词?

R Shiny 服务器未呈现正确的 ggplot 字体系列

通过 geom_tile ggplot R 的热图 - 正确组织每月因子的 y 轴水平

为线条/形状组合正确显示 ggplot 图例

使用 ggplot2 获取图例以正确显示