使用ggplot2传说和标记平滑的线条+额外的线条

时间:2015-04-17 04:35:07

标签: r ggplot2

我正在研究网络数据中的某些模式,并且标注行有一些问题,我有多个行类:

  1. 每个因素(网络)的黄土线
  2. y = 4000
  3. 的基线
  4. 对所有数据(非因素)
  5. 起作用的gam行

    现在,堆栈溢出帮助我达到了这一点(谢谢!),但我觉得我已经碰到了我需要做的事情:

    一个。提供第3行

    的图例条目

    B中。标记图表上的每一行(按照#1#2#3 - 总共8行)

    这是我到目前为止的代码:

    p <- ggplot(network_data, aes(x=timeofday,y=dspeed, colour=factor(network)))+stat_smooth(method="loess",formula=y~x,se=FALSE)
    p <- p + stat_function(fun=function(x)4000, geom="line", linetype="dashed", aes(colour="Baseline"))
    p <- p + xlab("Time of Day (hr)") + ylab("Download Speed (ms)")
    p <- p + theme(axis.line=element_line(colour="black"))
    
    # add the gam line, colouring it purple for now
    q <- layer(data=network_data, mapping=aes(x=timeofday,y=dspeed), stat="smooth"
           , stat_params=list(method="gam", formula=y~s(x), se=FALSE), geom="smooth", geom_params=list(colour="purple"), position=position_identity()) 
    
    graph <- p+q # add the layer
    
    #legend
    graph <- graph+scale_colour_discrete(name="network")
    
    # set up the origin correctly and axes etc
    graph2 <- graph + scale_y_continuous(limits=c(0,6500), expand=c(0,0), breaks=c(0,1000,2000,3000,4000,5000,6000)) + scale_x_datetime(limits=as.POSIXct(c("2015-04-13 00:00:01","2015-04-13 23:59:59")), expand = c(0, 0), breaks=date_breaks("1 hour"), labels=date_format("%H"))
    

    很高兴考虑其他软件包,但ggplot2似乎是迄今为止最好的。

    无论如何都要“自动”(通过编程)这样做,因为我试图自动生成这些图形?

    我已将数据作为.Rda文件提供:

    https://dl.dropboxusercontent.com/u/5268020/network_data.Rda

    这是当前情节的图像:

    enter image description here

1 个答案:

答案 0 :(得分:0)

对于q B,请尝试annotate并手动编码每行标签的位置和文字。鉴于传说似乎没必要。 http://docs.ggplot2.org/current/annotate.html