r - 绘制大量线条的更好方法(也许在 ggplot 中)?

标签 r plot ggplot2

使用 R 3.0.2,我有一个看起来像的数据框

head()
         0     5    10    15    30    60   120   180   240
YKL134C  0.08 -0.03 -0.74 -0.92 -0.80 -0.56 -0.54 -0.42 -0.48
YMR056C -0.33 -0.26 -0.56 -0.58 -0.97 -1.47 -1.31 -1.53 -1.55
YBR085W  0.55  3.33  4.11  3.47  2.16  2.19  2.01  2.09  1.55
YJR155W -0.44 -0.92 -0.27  0.75  0.28  0.45  0.45  0.38  0.51
YNL331C  0.42  0.01 -0.05  0.23  0.19  0.43  0.73  0.95  0.86
YOL165C -0.49 -0.46 -0.25  0.03 -0.26 -0.16 -0.12 -0.37 -0.34

其中row.names()是变量名,names()是测量时间,values是测量值。它有几千行深。我们称它为 tmp

我想做一个合理性检查,将每个变量作为时间与值绘制成一个图上的线图。有什么比天真地用 plot() 和 lines() 绘制每一行更好的方法:

timez <- names(tmp)
plot(x=timez, y=tmp[1,], type="l", ylim=c(-5,5))
for (i in 2:length(tmp[,1])) {
    lines(x=timez,y=tmp[i,])
}

上面的粗略答案已经足够好了,但我正在寻找一种正确的方法。我最近脑震荡,如果我遗漏了一些明显的东西,我深表歉意。我经常这样做。

是否可以通过转置 data.frame 来观察数千个变量的每个时间点?或者以某种有意义的方式 melt()-ing data.frame?有没有办法使用 data.frames 的 aggregate()s 或其他东西在 ggplot 中处理它?这不是执行此操作的正确方法,对吗?

不知所措。

最佳答案

我个人更喜欢 ggplot2 来满足我所有的绘图需求。假设我理解正确,您可以使用 reshape2 以长格式放置数据,然后使用 ggplot2 在同一图上绘制所有线条:

library(reshape2)
df2<-melt(df,id.var="var")
names(df2)<-c("var","time","value")
df2$time<-as.numeric(substring(df2$time,2))

library(ggplot2)
ggplot(df2,aes(x=time,y=value,colour=var))+geom_line()

enter image description here

关于r - 绘制大量线条的更好方法(也许在 ggplot 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290134/

相关文章:

sql-server - 并行计算环境中使用JDBC时服务器内存不足问题

matlab - 同时将 matlab 图形中的多条线条颜色设置为不同的值

r - 在 tikzDevice 中使用 tikzAnnotate 注释 ggplot2 图

r - 如何让geom_area()不被堆叠

matlab - 如何在 Matlab 中绘制 int64 值?

r - 如何突出 ggplot 上的差异?

R/ Shiny 用户注册/认证

Polycharts 热图 rCharts 中的重新排序因子

r - 识别r中的回归样本

python - 有没有一个Python模块可以在不网格化的情况下对数据进行轮廓绘制