我想要绘制多行,如GGPLOT2一个“类”的一部分。 我可以绘制类似如下:
但我的问题是,我想说明N1,N2和N3作为一个单独的类(灰色细线每个在图例一个名字)。
我的问题是,如果我为了创建在数据帧的新的因素将它们分组,我结束了借鉴N1(上右)到n2(左下)的开始结束的另外连接它增加了跨对角线我的图表:
这更接近我想要的东西,但有额外的对角线。 如果它的事项,我计算这些使用ROCR然后提取所得到的x和y分performance
对象,以产生这些行。
我想要绘制多行,如GGPLOT2一个“类”的一部分。 我可以绘制类似如下:
但我的问题是,我想说明N1,N2和N3作为一个单独的类(灰色细线每个在图例一个名字)。
我的问题是,如果我为了创建在数据帧的新的因素将它们分组,我结束了借鉴N1(上右)到n2(左下)的开始结束的另外连接它增加了跨对角线我的图表:
这更接近我想要的东西,但有额外的对角线。 如果它的事项,我计算这些使用ROCR然后提取所得到的x和y分performance
对象,以产生这些行。
这里有一种方法,但我不认为你会非常喜欢它:
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节省您不必手动构建每一个传说,你(经常,但不总是)在牺牲一定的灵活性,相比于基础图形。
我有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?