无法在sf linestring对象上使用alpha与ggplot2 :: geom_sf一起工作

这需要R中的库sf和ggplot2.我有一个带有4个线串的sf对象.其中3个是相同的,一个是扩展的:

a <- st_linestring(rbind(c(2,2), c(3,3), c(3,2)))
b <- st_linestring(rbind(c(2,2), c(3,3)))
c <- st_linestring(rbind(c(2,2), c(3,3)))
d <- st_linestring(rbind(c(2,2), c(3,3)))

testsf <- st_sf(object = c(1, 2, 3, 4), geometry = st_sfc(a, b, c, d), crs = 4326)`

如果我在ggplot2中用alpha = 0.1绘制它,我会期望对角线比垂直线更暗,因为它更频繁地出现.这是ggplot2中的正常(非sf)行为.

 ggplot(data = testsf) + geom_sf(data = testsf, alpha = 0.1, lwd = 2, color = "black")

但是,所有行似乎都是相等的alpha.为什么会这样?

更新:如果我尝试

testsf %<>% dplyr::mutate(geochar = as.character(geometry)) %>% dplyr::group_by(geochar) %>% dplyr::tally() %>% sf::st_cast()

ggplot(data = testsf) + geom_sf(data = testsf, aes(alpha = n),  lwd = 2, color = "black")

图例显示alpha更改,好像它是一个多边形…也许geom_sf没有正确处理行的alpha(注意,上面的代码需要dplyr和magrittr包)

最佳答案 我在github.com/edzer/sf上提交了一个问题.

https://github.com/edzer/sfr/issues/311#issuecomment-296752334

geom_sf尚不支持此功能.希望在不久的将来……

点赞