我想在以下ggplot中调整线型。因此,我在data.frame df中引入了另一列来表示线型,但是一旦将其转换为因数,图例中就会出现线型而不是“方法”(请参阅​​试验3)。

如何获得传说中的“方法”?最后,我希望能够

  • 自由选择线型
  • 自由选择这些线型在图例中的显示顺序,然后选择
  • 将相应的“方法”显示为图例文本。

  • 这是我的尝试:
    require(ggplot2)
    set.seed(1)
    df <- data.frame(x=c(1:4, 2:5),
                     method=rep(c("a", "b"), each=4),
                     lt=rep(c(5,3), each=4),
                     value=rep(c(0,1), each=4)+runif(8))
    
    ## trial 1:
    ggplot(df, aes(x=x, y=value)) +
       geom_point() +
       geom_line(aes(group=method, linetype=method))
    # fine, but not the linetypes I would like to have
    
    ## trial 2:
    ggplot(df, aes(x=x, y=value)) +
       geom_point() +
       geom_line(aes(group=method, linetype=lt))
    # correct linetypes, but no legend
    
    ## trial 3:
    ggplot(df, aes(x=x, y=value)) +
       geom_point() +
       geom_line(aes(group=method, linetype=as.factor(lt)))
    # legend, but not the correct one (I would like to have the "group"ing
    # variable "method" in the legend as in trial 1)
    

    最佳答案

    使用method作为linetype,然后手动将其映射到所需的行类型。您无需以这种方式引入另一个变量。

    ggplot(df, aes(x=x, y=value)) +
        geom_point() +
        geom_line(aes(linetype=method)) +
        scale_linetype_manual(breaks=c("a","b"), values=c(5,3))
    

    关于r - ggplot2:如何调整图例中的线型和顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8407467/

    10-12 18:31