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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ggplotly映射无法正确显示(R)相关的知识,希望对你有一定的参考价值。

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

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

enter image description here

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

enter image description here

正如你可以看到的那样,各个区域都在整个地方挥霍,没有明显的边界,填充有点沙哑,好像它是很多线而不是填充。此外,工具提示大部分都表示“跟踪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")

我有什么想法我做错了吗?

答案

看起来似乎不支持geom_map(据我所知)。相反,看看here。有一个包sf,它描述了一个名为geom的新geom_sf,它可以解决你的问题。这个情节网站给出了支持geomhere的例子。

也许值得注意的是,ggplotly对于这样一个事实是有用的,在我看来,ggplot的语法比plotly更清晰。话虽这么说,如果你想让情节在反应性环境中运作良好,你最好只是按照你想要的方式去做,即these教程中包含的东西。

另一答案

按照@ 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

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

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

无法在 R 中使用 GGPlot 显示多个完整的饼图

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

我无法使用 ggplot 在 r 中填充直方图

无法在 R 中使用 ggplot2 更改图例标题和标签

完美解决R完中文无法显示或R语言中文乱码