【发布时间】:2017-07-28 11:04:23
【问题描述】:
基本上,我试图叠加两个不同的图,每个图都由不同的因子着色,并希望保留对着色顺序的控制(即,不让 ggplot 决定因子水平的顺序)。
例如,假设我有这两个不同的数据框:
labels1 <- factor(rep(LETTERS[1:2], each=5), levels=LETTERS[2:1])
dfp1 <- data.frame(L1=labels1, x=1:10, y=rep(1:2, each=5))
labels2 <- factor(rep(letters[1:2], each=5), levels=letters[2:1])
dfp2 <- data.frame(L2=labels2, x=(1:10), y=rep(c(0.25, 0.75), each=5))
我想绘制第一个的 ECDF,按 L1 着色:
p <-
ggplot(dfp1, aes(x=x, y=y, color=L1)) +
stat_ecdf()
如果我知道要在此之上覆盖第二个数据帧的点,我可以这样做
p + geom_point(data=dfp2, mapping=aes(x=x, y=y, color=L2))
但随后 ggplot 将 L1 和 L2 这两个因素合二为一,并在其级别上使用字母顺序:
我有几个这样的图要制作,点的标签会发生变化,所以这种重构完全改变了图之间元素的颜色。我想说服 ggplot 将每个因子的水平保持在给定的顺序,并保持因子的顺序,以便根据
进行着色factor(c(as.character(labels1), as.character(labels2)),
levels=c(levels(labels1), levels(labels2)))
我该怎么做?
【问题讨论】: