情节:如何为地图设置 ylim 和 xlim?
Plotly: How do I set ylim and xlim for a map?
目标:
我正在尝试使用 plotly(通过 ggplotly)创建 ggplot2 地图的交互式版本。
问题: 在图表上方和下方添加额外的 space,而不是像它应该的那样“拉伸”图表(例如,参见图片)。
例子
我想要的(在ggplot2中制作的例子):
我得到了什么(情节制作的例子):
我知道 aspect.ratio 在 ggplotly 中不受支持,但是有没有其他方法可以在保持 x 轴 (-12,2) 和 y- 的同时删除上方和下方的 space轴 (50,60) 限制原样
代码:
library(maps)
library(ggplot2)
library(plotly)
boundaries <- ggplot2::map_data("world", region=c("UK","Ireland","France","Norway"))
map <- ggplot() +
geom_polygon(data=boundaries, aes(x=long, y=lat, group=group), color="black", fill="white") +
coord_sf(xlim=c(-12, 2), ylim=c(50,60)) +
theme(aspect.ratio = 1.2)
show(map)
visual <- ggplotly(map, height=1.2*400, width=400, tooltip=c("text"), hoverinfo='hide',
dynamicTicks=F) %>%
layout(xaxis=list(autorange=F, range=c(-12, 2)), yaxis = list(autorange=F, range=c(50,60)))
show(visual)
要复制问题:
OS: Windows 10
IDE: RStudio
R: R 3.6.1
您正在使用 coord_sf
,它适用于 sf 数据帧的特殊 class,而不是 ggplot
附带的多边形。您可以使用 rnaturalearth
这样的包来轻松获取这种格式的数据。在这里,我 select 编辑了一张 high-res 图像,但如果您难以安装 rnaturalearthhires
,只需 select“中等”地图大小即可。
library(ggplot2)
library(plotly)
library(rnaturalearth)
library(sf)
df <- ne_countries(country = c("United Kingdom", "Ireland", "France", "Norway"),
returnclass = "sf",
scale = "large")
map <- ggplot(df) +
geom_sf(color = "black", fill = "white") +
coord_sf(xlim = c(-12, 2), ylim = c(50, 60))
show(map)
我们得到这样的绘图图:
visual <- ggplotly(map, height = 1.2 * 600, width = 600, tooltip=c("text"),
hoverinfo='hide', dynamicTicks = FALSE)
show(visual)
有关信息,如果您在 Power BI 服务中使用 R,请按以下方式操作:
您可以通过在布局中的 xaxis 选项中添加缩放比率来获得所需的结果(请参见下面的代码)。
library(maps)
library(ggplot2)
library(plotly)
boundaries <- ggplot2::map_data("world", region=c("UK","Ireland","France","Norway"))
map <- ggplot() +
geom_polygon(data=boundaries, aes(x=long, y=lat, group=group), color="black", fill="white") +
coord_sf(xlim=c(-12, 2), ylim=c(50,60))
show(map)
visual <- ggplotly(map, height=1.2*400, width=400, tooltip=c("text"), hoverinfo='hide',
dynamicTicks=F) %>%
layout(xaxis=list(scaleratio=0.6))
show(visual)
*根据接受的答案,Power BI 服务不支持 rnaturalearth (https://docs.microsoft.com/en-us/power-bi/connect-data/service-r-packages-support)
目标: 我正在尝试使用 plotly(通过 ggplotly)创建 ggplot2 地图的交互式版本。
问题: 在图表上方和下方添加额外的 space,而不是像它应该的那样“拉伸”图表(例如,参见图片)。
例子
我想要的(在ggplot2中制作的例子):
我得到了什么(情节制作的例子):
我知道 aspect.ratio 在 ggplotly 中不受支持,但是有没有其他方法可以在保持 x 轴 (-12,2) 和 y- 的同时删除上方和下方的 space轴 (50,60) 限制原样
代码:
library(maps)
library(ggplot2)
library(plotly)
boundaries <- ggplot2::map_data("world", region=c("UK","Ireland","France","Norway"))
map <- ggplot() +
geom_polygon(data=boundaries, aes(x=long, y=lat, group=group), color="black", fill="white") +
coord_sf(xlim=c(-12, 2), ylim=c(50,60)) +
theme(aspect.ratio = 1.2)
show(map)
visual <- ggplotly(map, height=1.2*400, width=400, tooltip=c("text"), hoverinfo='hide',
dynamicTicks=F) %>%
layout(xaxis=list(autorange=F, range=c(-12, 2)), yaxis = list(autorange=F, range=c(50,60)))
show(visual)
要复制问题:
OS: Windows 10
IDE: RStudio
R: R 3.6.1
您正在使用 coord_sf
,它适用于 sf 数据帧的特殊 class,而不是 ggplot
附带的多边形。您可以使用 rnaturalearth
这样的包来轻松获取这种格式的数据。在这里,我 select 编辑了一张 high-res 图像,但如果您难以安装 rnaturalearthhires
,只需 select“中等”地图大小即可。
library(ggplot2)
library(plotly)
library(rnaturalearth)
library(sf)
df <- ne_countries(country = c("United Kingdom", "Ireland", "France", "Norway"),
returnclass = "sf",
scale = "large")
map <- ggplot(df) +
geom_sf(color = "black", fill = "white") +
coord_sf(xlim = c(-12, 2), ylim = c(50, 60))
show(map)
我们得到这样的绘图图:
visual <- ggplotly(map, height = 1.2 * 600, width = 600, tooltip=c("text"),
hoverinfo='hide', dynamicTicks = FALSE)
show(visual)
有关信息,如果您在 Power BI 服务中使用 R,请按以下方式操作:
您可以通过在布局中的 xaxis 选项中添加缩放比率来获得所需的结果(请参见下面的代码)。
library(maps)
library(ggplot2)
library(plotly)
boundaries <- ggplot2::map_data("world", region=c("UK","Ireland","France","Norway"))
map <- ggplot() +
geom_polygon(data=boundaries, aes(x=long, y=lat, group=group), color="black", fill="white") +
coord_sf(xlim=c(-12, 2), ylim=c(50,60))
show(map)
visual <- ggplotly(map, height=1.2*400, width=400, tooltip=c("text"), hoverinfo='hide',
dynamicTicks=F) %>%
layout(xaxis=list(scaleratio=0.6))
show(visual)
*根据接受的答案,Power BI 服务不支持 rnaturalearth (https://docs.microsoft.com/en-us/power-bi/connect-data/service-r-packages-support)