ggplot:一种颜色/班多行(ggplot: Multiple Lines for one Col

2019-09-19 11:16发布

我想要绘制多行,如GGPLOT2一个“类”的一部分。 我可以绘制类似如下:

但我的问题是,我想说明N1,N2和N3作为一个单独的类(灰色细线每个在图例一个名字)。

我的问题是,如果我为了创建在数据帧的新的因素将它们分组,我结束了借鉴N1(上右)到n2(左下)的开始结束的另外连接它增加了跨对角线我的图表:

这更接近我想要的东西,但有额外的对角线。 如果它的事项,我计算这些使用ROCR然后提取所得到的x和y分performance对象,以产生这些行。

Answer 1:

这里有一种方法,但我不认为你会非常喜欢它:

d1 <- data.frame(x = 1:10,
                 y = rep(1:2,each = 5),
                 grp = factor(rep(letters[1:2],each = 5),levels = letters[1:3]))
d1 <- rbind(d1,data.frame(x = 1:2,y = c(NA,NA),grp = c('c','c')))

d2 <- data.frame(x = 1:15,
                 y = rep(3:5,each = 5),
                 grp = rep(1:3,each = 5))   

ggplot() + 
    geom_line(data = d1,aes(x = x,y = y,group = grp,colour = grp)) + 
    geom_line(data = d2,aes(x = x,y = y,group = grp),colour = "blue")

请注意,您的解决方案不会与其他类型的数据很好地工作。 碰巧的是每个要合并到传说中的同一类别的三条线开始,在基本相同点结束。 如果不是这样的话,你最终与不必要的连接线。

上面的方法将更加普遍,但你可以看看是不是少尴尬。 如果有什么更不方便。

这种问题已经想出了很多次,这可能是因为我忘了一个简单的解决方案。 但在一般情况下,尽量记住,以换取GGPLOT2节省您不必手动构建每一个传说,你(经常,但不总是)在牺牲一定的灵活性,相比于基础图形。



Answer 2:

我有rbind倒是从ROCR的项目performance想要绘制此图时直接对象为data.frame。 我意识到,我可以扭转中产阶级数据的顺序从右上角的行程切到左下方。 即

n1 <- getPerformance(test1)
n2 <- getPerformance(test2)
n3 <- getPerformance(test3)

将创建3个数据帧寻找像

  type x           y
1   n1 0 0.000000000
2   n1 0 0.003448276
3   n1 0 0.006896552
4   n1 0 0.010344828
5   n1 0 0.013793103
6   n1 0 0.017241379
...
26565   n1 0.9999619 1
26566   n1 1.0000000 1

这里的问题是,当我rbind N1到n2,我会N1的点(1,1)连接到N2的点(0,0) - 创建对角线。

就我而言,一个(马虎)解决方案是仅仅逆转每隔一行的顺序,使没有对角线。

n2_rev <- n2[nrow(n2):1,]
ns <- rbind(n1,n2_rev,n3)

所以,现在的行追溯到反复复,而不是起点,并在同一位置始终结束,创建以下图表:

尽管如此,我认为有来处理这一个更普遍的方式。 有添加一行到GGPLOT2图表的好方法,如lines()函数为基础R?



文章来源: ggplot: Multiple Lines for one Color/class
标签: r ggplot2