【问题标题】:Customize legend in ggplot自定义 ggplot 中的图例
【发布时间】:2011-12-08 04:44:38
【问题描述】:

我需要使用 ggplot2 自定义图表的帮助。下面是我正在使用的代码和结果图:

> p=ggplot(a2,aes(x=grid,y=median))+geom_line(size=1.3)+
    geom_line(aes(x=grid,y=lower,linetype=2,colour='red'),size=1.3)+
    geom_line(aes(x=grid,y=upper,linetype=2,colour='red'),size=1.3)+
    geom_line(aes(x=trueX,y=trueY,linetype=1,colour='blue'),size=.8)+
    geom_line(aes(x=grid,y=xDens,linetype=1),size=.5)+
    geom_point(data=a1,aes(x=X,y=Y),size=1)

首先,红色和蓝色似乎与应有的颜色不符。其次,我想用四个条目自定义图例:

  1. 合身(黑线)
  2. Conf Int(红色虚线)
  3. 真实曲线(蓝线)
  4. X 密度(小黑线)

我已经玩了一段时间了,但无法弄清楚。非常感谢您的建议。

我可能需要重新排列我的数据以获得我想要的,这是我现在拥有的预览(忽略带有点的数据集 a1):

> head(a2[,c(1,2,4,5,6,7,8)])
     lower    upper   median      grid   trueX     trueY    xDens
1 26.65933 28.83431 27.54782 -4.845770 -3.998449 27.73697 0.02803692
2 26.65933 28.77224 27.54284 -4.826273 -3.967264 27.71877 0.02902979
3 26.65933 28.77224 27.54284 -4.806776 -3.910030 27.68470 0.02953585
4 26.65933 28.77224 27.54284 -4.787279 -3.898646 27.67782 0.03056721
5 26.65933 28.77224 27.54284 -4.767782 -3.891712 27.67361 0.03162419
6 26.65933 28.77224 27.54284 -4.748285 -3.890767 27.67304 0.03270666

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    这可能离你想要的很近:

    样本数据:

    > d
         lower    upper   median      grid     trueX    trueY      xDens
    1 26.65933 28.83431 27.54782 -4.845770 -3.998449 27.73697 0.02803692
    2 26.65933 28.77224 27.54284 -4.826273 -3.967264 27.71877 0.02902979
    3 26.65933 28.77224 27.54284 -4.806776 -3.910030 27.68470 0.02953585
    4 26.65933 28.77224 27.54284 -4.787279 -3.898646 27.67782 0.03056721
    5 26.65933 28.77224 27.54284 -4.767782 -3.891712 27.67361 0.03162419
    6 26.65933 28.77224 27.54284 -4.748285 -3.890767 27.67304 0.03270666
    

    代码:

    d2 <- melt(subset(d, select = -c(trueX)), id = "grid")
    ggplot(d2, aes(grid, value, colour = variable, linetype = variable, size = variable)) +
      geom_line() +
      scale_colour_manual("", values = c("red", "red", "black", "blue", "black"), breaks = levels(d2$variable)) +
      scale_linetype_manual("", values = c(2, 2, 1, 1, 1), breaks = levels(d2$variable)) +
      scale_size_manual("", values = c(0.5, 0.5, 0.5, 0.5, 0.25), breaks = levels(d2$variable))
    

    输出:

    【讨论】:

    • 谢谢,效果很好。但是,当我尝试从新数据集中添加点(最后一行)时遇到了一个问题,我现在收到一条错误消息。如果 plt 是原始图(您已显示)并且我运行: plt+geom_point(data=a1,aes(x=X,y=Y)) 我得到: eval 中的错误(expr,envir,enclos):找不到对象“变量”
    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2022-01-23
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2018-09-15
    • 2022-01-09
    相关资源
    最近更新 更多