子集数据帧并用循环绘制所有子集[R]

时间:2017-03-12 19:20:13

标签: r

我正在处理一个包含8个有用变量的数据框,其代码的概念是绘制4个变量(y轴为3,公共x轴为3)。数据框如下所示:

It has like 6500 rows

我想从文件列中对data.frame进行子集化,然后将LogP绘制为x轴,将温度,RH和臭氧绘制为y轴。 我尝试在绘图功能中使用子集但是没有顺利。我将此代码用于原始文件之一的绘图,但不知道如何包含子集

> plot(DataOzono$LogP, DataOzono$Temperature, axes= F,type="l",col="red", ylab = NULL, xlab = 'LogP',xaxt="n",yaxt="n" )
axis(2,ylim(c(min(DataOzono$Temperature),max(DataOzono$Temperature)), layout.widths(2)))
mtext(text = 'T',line = 2,side = 2)
par(new=TRUE)
plot(DataOzono$LogP, DataOzono$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4)
mtext("RH",side=4,line=2)
par(new=TRUE)
plot(DataOzono$LogP, DataOzono$Ozone,type="l",col="green",xaxt="n",yaxt="n",xlab="",ylab="")
mtext("O3",side=5,line=3)
axis(2, line = 4)

任何建议都会非常有用。

1 个答案:

答案 0 :(得分:1)

以下是如何在loop中绘制图表。在您给出的示例中,我们只有一个文件编号。但是,它应该为文件列中的每个数字创建一个图表。在Windows上,您可以使用savePlot保存到驱动器。我简化了你的例子,因为我遇到了错误。

DataOzono <- read.table(text="pressure    height  Temperature RH  Ozone   file    LogP
753.6   2541    16.8    76  0   80131   0.3475673
748.0   2604    17.7    32  0   80131   0.347959
743.5   2656    15.9    38  0   80131   0.3482766
739.8   2697    15.4    39  0   80131   0.3485396
736.6   2734    15.0    41  0   80131   0.3487685
731.8   2790    14.5    42  0   80131   0.3491142", header=TRUE, stringsAsFactors=FALSE)

original_par <- par()
par(mar=c(5.1, 8.1, 4.1, 3.1))

for (i in unique(DataOzono$file)){
DataOzono_subset <- DataOzono[DataOzono$file==i,] #keep only rows for that file number

plot(DataOzono_subset$LogP, DataOzono_subset$Temperature, axes= F,type="l",col="red", ylab = "", xlab = 'LogP',xaxt="n",yaxt="n" )
axis(2,col="red",col.axis="red")
mtext(text = 'T',line = 2,side = 2,col="red",col.lab="red")
par(new=TRUE)
plot(DataOzono_subset$LogP, DataOzono_subset$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4,col="blue",col.axis="blue")
mtext("RH",side=4,line=2,col="blue",col.lab="blue" )
par(new=TRUE)
plot(DataOzono_subset$LogP, DataOzono_subset$Ozone,type="l",col="darkgreen",xaxt="n",yaxt="n",xlab="",ylab="")
mtext("O3",side=2,line=6,,col="darkgreen",col.lab="darkgreen")
axis(2, line = 4,col="darkgreen",col.axis="darkgreen")

savePlot(filename=paste0("c:/temp/",i,".png"),type="png")
}

par()  <- original_par #restore par to initial value.

enter image description here