使用ggplotly映射未正确显示(R)

时间:2018-08-31 11:01:02

标签: r ggplot2 maps r-plotly ggplotly

我已经使用ggplot制作了地图,并使用ggplotly对其进行了绘制。

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

enter image description here

但是当使用ggplotly显示它时,它看起来像这样:

enter image description here

如您所见,各个区域到处都是乱七八糟的东西,没有清晰的边界,填充有点像是划痕,好像是很多线条而不是填充。此外,工具提示在很大程度上表示“ 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")

有什么主意我做错了吗?

2 个答案:

答案 0 :(得分:2)

据我所知,似乎不支持geom_map。相反,请看here。有一个软件包sf描述了一个名为geom的新geom_sf,该软件包可能会解决您的问题。情节严重的网站提供了here受支持的geom的示例。

值得一提的是,ggplotly可以解决ggplot的语法比plotly清晰得多的事实。话虽这么说,如果您想让绘图在反应性环境中正常工作,那么最好还是按照自己想要的方式进行操作,即these教程之一中包含的内容。

答案 1 :(得分:1)

根据@ 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)))

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

ccg_plotly_plot