【发布时间】:2016-04-06 08:33:20
【问题描述】:
我想创建一个绘图,其中线条之间的区域根据变量的因子填充。我希望多边形在行ya > yb 时为红色,在yb > ya 时为绿色。
xa <- c(1,2,3,4,5,6)
ya <- c(1,10,15,7,12,3)
xb <- c(1,2,3,4,5,6)
yb <- c(5,10,14,12,2,11)
toyset <- as.data.frame(cbind(xa, ya, xb, yb))
toyset$color<-ifelse(toyset$yb>ya,"green","red")
poly_df <- rbind(setNames(toyset[,c(1,2,5)],c('x','y','color')),
setNames(toyset[6:1,3:5],c('x','y','color')))
这根本不起作用:
ggplot(toyset) +
geom_line(aes(xa, ya), colour="red") +
geom_line(aes(xb, yb), colour="green") +
geom_polygon(data = poly_df,aes(x = x,y = y,fill=poly_df$color))
这里的多边形没问题,但没有不同的颜色(见图):
ggplot(toyset) +
geom_line(aes(xa, ya), colour="red") +
geom_line(aes(xb, yb), colour="green") +
geom_polygon(data = poly_df,aes(x = x,y = y),fill=poly_df$color)
【问题讨论】:
-
我猜你需要先定义五个多边形中每一个的坐标,并为每个多边形分配一个id和颜色,然后你可以使用
geom_polygon(data = poly_df, aes(x = x,y = y, fill = id, colour = id)) -
我不是已经通过创建 poly_df 做到了这一点吗?
-
我不这么认为。您还需要包括两条线相交的点。
-
那么只有它们相交的点并删除其他点?因为它们相交的点已经在那里了。
-
不,它们不是,您需要这些来完成 poly_df。如果我没记错的话,您正在寻找五个多边形,每个多边形需要 3 个(第一个和最后一个)或 4 个(多边形 2,3 和 4)组 x 和 y 坐标。例如。第二个已经有坐标 (x=2, y=10), (x=3, y=15) 和 (x=3, y=14) 但缺少两条线相交的坐标,有些在 (x =3.2, y=13.8)。