请考虑以下代码:
library(ggplot2)
foo <- data.frame(x=1:10,A=1:10,B=10:1)
ggplot(melt(foo,id.vars="x"),aes(x,value,color=variable))+geom_line(size=5)
Run Code Online (Sandbox Code Playgroud)

我想将红线(A)置于B的顶部(参见交叉点),而颜色和它们在图例中出现的顺序不会改变.有什么办法吗?
使用子集化数据帧重新绘制红线就可以了.
library(ggplot2)
foo <- data.frame(x=1:10,A=1:10,B=10:1)
require(reshape2)
fooM <- melt(foo,id.vars="x")
p<-ggplot()
p<-p+geom_line(data=fooM[fooM$variable!="A",],aes(x,value,color=variable),size=5)
p<-p+geom_line(data=fooM[fooM$variable=="A",],aes(x,value,color=variable),size=5)
p
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,ggplot按顺序将图层应用于彼此之上 - 在逐行构造图表时,可以最好地利用这些图层.
编辑2:@tonytonov是对的,人们可能想避免两次绘制相同的东西.修改了我的答案来绘制除A之外的所有内容,第一次,然后只有A.结果保持不变,现在也兼容透明度或大数据;)
| 归档时间: |
|
| 查看次数: |
7890 次 |
| 最近记录: |