我已经使用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")
有什么主意我做错了吗?
答案 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)))
这将产生以下带有标记的工具提示并用多边形填充的图。