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

Map using ggplotly not showing correctly (R)

我使用 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")

知道我做错了什么吗?

plotly 似乎不支持 geom_map(据我所知)。相反,看看 here. There's a package sf which describes a new geom called geom_sf that might solve your problem. The plotly website gives examples of geom's that are supported here.

可能还值得注意的是,ggplotly 是一种解决事实的方法,在我看来,ggplot 的语法比 plotly 的语法清晰得多。话虽这么说,如果您希望绘图在反应性上下文中运行良好,您最好按照 plotly 希望的方式进行操作,即 these 教程之一中包含的内容。

根据@bk18 的建议和 plotly website,我制作了以下简单示例。我在你发布的 link 中使用了 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)))

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