使用 ggplotly 的地图显示不正确 (R)
Map using ggplotly not showing correctly (R)
我使用 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")
知道我做错了什么吗?
plotly 似乎不支持 geom_map(据我所知)。相反,看看 here. There's a package sf
which describes a new geom
called geom_sf
that might solve your problem. The plotly website gives examples of geom
's that are supported here.
可能还值得注意的是,ggplotly 是一种解决事实的方法,在我看来,ggplot 的语法比 plotly 的语法清晰得多。话虽这么说,如果您希望绘图在反应性上下文中运行良好,您最好按照 plotly 希望的方式进行操作,即 these 教程之一中包含的内容。
根据@bk18 的建议和 plotly website,我制作了以下简单示例。我在你发布的 link 中使用了 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)))
这将生成以下图,带有标记的工具提示并填充了多边形。
我使用 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")
知道我做错了什么吗?
plotly 似乎不支持 geom_map(据我所知)。相反,看看 here. There's a package sf
which describes a new geom
called geom_sf
that might solve your problem. The plotly website gives examples of geom
's that are supported here.
可能还值得注意的是,ggplotly 是一种解决事实的方法,在我看来,ggplot 的语法比 plotly 的语法清晰得多。话虽这么说,如果您希望绘图在反应性上下文中运行良好,您最好按照 plotly 希望的方式进行操作,即 these 教程之一中包含的内容。
根据@bk18 的建议和 plotly website,我制作了以下简单示例。我在你发布的 link 中使用了 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)))
这将生成以下图,带有标记的工具提示并填充了多边形。