使用ggplotly映射无法正确显示(R)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ggplotly映射无法正确显示(R)相关的知识,希望对你有一定的参考价值。
我使用ggplot制作了一张地图并使用ggplotly绘制了它。
当它在ggplot中时它看起来像这样:
但是当使用ggplotly显示它时,它看起来像这样:
正如你可以看到的那样,各个区域都在整个地方挥霍,没有明显的边界,填充有点沙哑,好像它是很多线而不是填充。此外,工具提示大部分都表示“跟踪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
,它可以解决你的问题。这个情节网站给出了支持geom
的here的例子。
也许值得注意的是,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)))
这将生成以下图表,带有标记的工具提示并填充多边形。
以上是关于使用ggplotly映射无法正确显示(R)的主要内容,如果未能解决你的问题,请参考以下文章