我对在情节中绘制传奇有问题.我已经在网上搜索了几个小时寻找解决方案,但还没有找到任何结果.
我试图用不同的线和多边形形状文件创建一个ggplot.我用函数geom_sf()绘制形状文件.这幅画不是问题.我的问题与传奇创作有关.
目标是创建一个只有一个图例的情节,并具有所有不同的形状文件类型,包括它们的 colored颜色 和/或填充.这意味着,在图例中,线型应表示为简单直线,多边形应表示为简单多边形.这一切我都做到了.
主要的困难在于,其中一个polygonshape(为了更好的可读性)不仅使用"fill"参数,而且还使用"color"参数.
如果我创建一个绘图,其中所有多边形形状总是使用fill参数作为astetic,所有线型总是使用color参数作为astetic,那么一切都很好.但一旦我在情节中加入一个同时使用两个参数的多边形,它就会 destruct 整个传说 struct .例如,在这种情况下,线条形状文件的符号突然有了框架和/或背景,尽管它们不应该有框架和/或背景.
用ggplot构建这样的东西是不可能的,还是我太笨拙了?
总结:
与下面创建的最小示例类似,我想在这个图中创建一个图例,其中:
- A = a polygon symbol is without border (as it can be seen in the
plot) - B=多边形符号带有边框(如图所示),且
- C=没有边框或背景的简单线条(如图所示).
我怎样才能让它工作?
library(ggplot2)
library(sf)
poly1 <- cbind(lon = c(5, 6, 7, 5), lat = c(52, 53, 51, 52))
poly2 <- cbind(lon = c(3, 5, 7, 3), lat = c(50, 52, 50, 50))
poly1 <- st_sf(st_sfc(st_polygon(list(poly1))))
poly2 <- st_sf(st_sfc(st_polygon(list(poly2))))
line <- st_sf(st_sfc(list(st_linestring(cbind(lon = c(5.5, 4.5), lat = c(53.5, 54.5))))))
ggplot() +
geom_sf(data = poly1,
aes(fill = "A"),
colour = NA,
show.legend = "polygon") +
geom_sf(data = poly2,
aes(fill = "B",
colour = "B"),
show.legend = "polygon") +
geom_sf(data = line,
aes(colour = "C"),
show.legend = "line") +
scale_fill_manual(name="Legend",
values = c("A" = "yellow", "B" = "green"),
guide = guide_legend(override.aes = list(linetype = c("blank","blank"), shape = NA))
) +
scale_colour_manual(name="Legend",values = c("B" = "blue", "C" = "purple"),
guide = guide_legend(override.aes = list(linetype = c(0, 1)))) +
theme_bw()