问题:我正在尝试使用sf软件包和ggplot2中的geom_sf()
创建美国各州/县的地图,但是我无法获得size
geom_sf()
中的多边形边界线宽度的参数,以在size < 1
时正确创建细线(例如ggplot(sf_obj) %>% geom_sf(size = 0.5)
。
具体来说,州/县的边界线似乎从任意小(例如size = 0.05
)一直到size = 0.702
都具有相同的宽度。然后size = 0.702
似乎有一个奇怪的边界,在边界上方,边界线突然显得更宽。然后,从size = 0.703
到size = 1
,边界线似乎具有相同的宽度。对于size
> 1,边界线会按预期逐渐变宽。
研究:看来geom_sf()
支持size
<1中的逐渐变化,如Bob Rudis here和Matt的地图代码所示Strimas-Mackey here。看来我的问题可能与ggplot2的Github页面上引用的here相同,标题为“ geom_sf将小尺寸向上舍入为1”,但问题已关闭,我不确定是否/如何实施此修复程序在我的机器上。 here(和here)还有一个外观类似的问题,但是Hadley建议在这种情况下,问题可能出在图形设备/查看器上。我在RStudio和RGUI中复制了我的问题(以及上面链接的两个Github问题),但不确定如何测试/更改图形设备/查看器。
版本信息::我正在使用ggplot2_3.0.0,sf_0.6.3,R版本3.5.1,RStudio版本1.1.456和Windows 10版本1803;该问题也已使用RGUI复制。
代码:以下是使用geom_sf()
docs中的北卡罗来纳州地图的代表。任何帮助,将不胜感激。谢谢!
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(reprex))
suppressPackageStartupMessages(library(sf))
#################################################
# plot north carolina map
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
ggplot(nc) + geom_sf(size = 0.05)
nc %>% ggplot() + geom_sf(size = 0.702)
nc %>% ggplot() + geom_sf(size = 0.703)
# get version info
packageVersion("ggplot2")
#> [1] '3.0.0'
packageVersion("sf")
#> [1] '0.6.3'
version
#> _
#> platform x86_64-w64-mingw32
#> arch x86_64
#> os mingw32
#> system x86_64, mingw32
#> status
#> major 3
#> minor 5.1
#> year 2018
#> month 07
#> day 02
#> svn rev 74947
#> language R
#> version.string R version 3.5.1 (2018-07-02)
#> nickname Feather Spray
更新:正如Chris和Ibusett所指出的,使用ggsave
后,边界线具有预期的宽度。谢谢!