使用 ggplotly 的地图显示不正确(R)
Posted
技术标签:
【中文标题】使用 ggplotly 的地图显示不正确(R)【英文标题】:Map using ggplotly not showing correctly (R) 【发布时间】:2019-02-06 09:40:22 【问题描述】:我使用 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")
任何想法我做错了什么?
【问题讨论】:
【参考方案1】:plotly 似乎不支持 geom_map(据我所知)。相反,看看here。有一个包sf
描述了一个名为geom_sf
的新geom
,它可能会解决您的问题。 plotly 网站提供了支持here 的geom
的示例。
可能还值得注意的是,ggplotly 是一种解决方法,在我看来,ggplot 的语法比 plotly 的更清晰。话虽如此,如果您希望情节在反应式上下文中运行良好,最好按照情节希望的方式进行,即包含在 these 教程之一中的内容。
【讨论】:
【参考方案2】:根据@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)的主要内容,如果未能解决你的问题,请参考以下文章
如何修复在 Linux/Fedora 31 上的 R 中未正确显示的度数符号
如何使用 R markdown 将 ggplot2 图形正确渲染成单词?