[英]ggplot2: legend of two different data sets
我正在使用形状文件使用ggplot绘制地图。 然后,使用geom_line添加圆弧。 圆弧根据其类型(单向或双向)进行着色,然后使用geom_point添加节点。 节点根据其类型(来源,目的地,节点,停车场)进行着色。 我想要两个不同的图例:一个用于节点类型,另一个用于弧类型。 不幸的是,ggplot合并了图例并仅生成一个图例。
这是代码(很抱歉,我无法提供可行的示例。我无法发送形状文件):
cityplot <- ggplot(data = s_zurich, aes(x = long, y = lat, group = id), fill = "white") +
geom_polygon(data = s_zurich, fill = "white") +
ylab("") + xlab("") +
theme(axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank())
cityplot_arcs <- cityplot +
geom_line(data = allarcs, aes(x = X1, y = X2, group = Id, colour = Direction), size = 1) +
xlab("") + ylab("")
cityplot_arcs_nodes <- cityplot_arcs + geom_point(aes(x = lon, y = lat, colour = Type), shape = 15, size = 4, inherit.aes = FALSE, data = allnodes) +
theme(legend.position = "none")
任何帮助,将不胜感激。
这是一个可能的解决方法。 如果您可以将geom_polygon
填充排除在aes()
调用之外-就像上面的情况一样,则可以为该点使用填充形状(21是一个圆形),并设置fill属性而不是颜色aes()
调用。 见下文:
mock_data<-
data.frame(x=sample(1:10,20,T),
y=sample(1:10,20,T),
direction=sample(c("1way","2way"),20,T),
type=sample(c("origin","destination","node","lot"),20,T))
ggplot(mock_data) +
geom_polygon(aes(x=c(0,12,12,0),y=c(0,0,12,12),id=c(1,1,1,1)),fill="white") +
geom_point(aes(x=x,y=y,fill=type),size=10,shape=21) +
geom_line(aes(x=x,y=y,color=direction),size=2) +
scale_fill_brewer(palette="Greens") + scale_color_brewer(palette="Set1")
如果失败,则只能使用ggplot()
绘制模拟图例,然后使用grid.arrange()
将其减去默认图例后在图形旁边进行绘制。 如果您需要帮助,请在评论中告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.