[英]How to plot one column vs the rest in R
我有一个数据集,其中[,1]是时间,然后下一个14是幅度。 我想在一张图上散布所有幅度与时间的关系图,其中每个不同的列都被网格化(彼此叠加)
我想使用原始数据制作这些图形,并分别制作它们,但只需要执行一次此过程。
称为A的数据集,唯一的独立变量是时间(第一列)
df<-data.frame(time=A[,1],V11=A[,2],V08=A[,3],
V21=A[,4],V04=A[,5],V22=A[,6],V23=A[,7],
V24=A[,8],V25=A[,9],V07=A[,10],xxx=A[,11],
V26=A[,12],PV2=A[,13],V27=A[,14],V28=A[,15],
NV1=A[,16])
我尝试了@VlooO提到的代码,但是它压缩了图形,使它们难以解读,并且每个图形都有自己的轴。 我所有的图形都可以在同一根轴上,只是标题分开。
在查看ggplots时,我认为这将是我想要的完美程序。
ggplot(data=df.melt,aes(x=time,y=???))
由于我要引用每个不同的列,我感到困惑。
谢谢R社区
希望我能正确理解你:
df<-data.frame(time=rnorm(10),A=rnorm(10),B=rnorm(10),C=rnorm(10))
par(mfrow=c(length(df)-1,1))
sapply(2:length(df), function(x){
plot(df[,c(1,x)])
})
结果将是
这里有一些提示,因为您没有提供可复制的示例,也没有显示您尝试过的方法:
list.files
浏览所有文档 lapply
遍历上一步的结果并读取数据 melt
从reshape2
和可变时间为ID。 使用ggplot2
将变量用作aes
颜色/组进行绘图。
library(ggplot2) library(reshape2) invisible(lapply(list.files(pattern=...),{ dt = read.table(x) dt.l = melt(dt,id.vars='time') print(ggplot(dt.l)+geom_line(aes(x=time,y=value,color=variable)) }))
如果不需要ggplot2,则可以使用基本图形的matplot
函数在一个命令中执行所需的操作。
解决方案:在研究了更多问题并使用ggplot2进行了更多尝试之后,我发现了一个可以正常工作的代码。 制作完数据框(如上所述)后,这就是我所做的
> df.m<- melt(df,"time")
ggplot(df.m, aes(time, value, colour = variable)) + geom_line() +
+ facet_wrap(~ variable, ncol = 2)
我会发布图片,但是我的信誉点还不够。
我仍然不太明白为什么aes(time,value,...)中的“ value”放在y位置,如果有人可以提供一个解释,将不胜感激。 我的最后一个问题是,是否有人知道如何缩小子图标题。
我可以在ggplot2中使用cex.lab =,cex.main =吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.