ggplot:一个Color/class的多行

Jef*_*len 7 r ggplot2

我试图在ggplot2中将多行作为单个"类"的一部分进行绘制.我可以绘制如下内容:

图像有5个班级

但我的问题是我想将n1,n2和n3显示为单个类(图例中每个都有一个名称的灰色细线).

我的问题是,如果我在数据框中创建一个新的因子以便对它们进行分组,我最终会从n1的末尾(右上角)到n2的开头(左下角)绘制一个加法连接,这会增加一个对角线我的图:

一类图

这更接近我想要的,但有额外的对角线.如果重要的是,我使用ROCR计算这些,然后从结果performance对象中提取x和y点以生成这些线.

jor*_*ran 2

这是一种方法,但我认为您不会很喜欢它:

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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,您的解决方案不能很好地处理其他类型的数据。碰巧您想要合并到图例中同一类别的三行中的每一行的开始和结束位置基本相同。如果不是这种情况,您最终会得到不需要的连接线。

上面的方法更通用,但正如你所看到的,它并不那么尴尬。如果有的话那就更不方便了。

这种问题已经出现很多次了,可能是我忘记了一个更简单的解决方案。但总的来说,请记住,与基本图形相比,作为ggplot2使您不必手动构建每个图例的交换,您(经常但并非总是)牺牲了一些灵活性。