我在R中有两个数据框,一个是我收集的数据化学数据,另一个是建模结果。
数据框1(让我们称之为df1)
MgO SiO2 CaO FeO Al2O3 Na2O K2O MnO Cr2O3 NiO TiO2 Total Comment Location Type Depth Data_source
1 36.940 38.340 0.248 27.165 0.007 0.000 0.000 0.478 0.044 0.000 0.055 103.277 117.775 Olivine Core 1-1 Core Groundmass 117.775 Probe
2 35.528 38.275 0.219 28.655 0.013 0.001 0.000 0.271 0.000 0.152 0.056 103.170 117.775 Olivine Core 1-2 Core Groundmass 117.775 Probe
数据框2(让我们称之为df2)
Pressure Temperature mass S H V Cp formula SiO2 TiO2 Al2O3 Fe2O3 FeO MnO MgO CaO Na2O K2O P2O5 H2O Data_source
1 500 1251.25 0.055572 0.137564 -685.8689 0.017108 0.069838 (Ca0.01Mg0.85Fe''0.15Mn0.00Co0.00Ni0.00)2SiO4 39.9248 0 0 0 14.3053 0.287910 45.0991 0.382914 0 0 0 0 MELTS
2 500 1250.25 0.107344 0.265616 -1324.4307 0.033038 0.134865 (Ca0.01Mg0.85Fe''0.15Mn0.00Co0.00Ni0.00)2SiO4 39.9162 0 0 0 14.3500 0.288613 45.0615 0.383735 0 0 0 0 MELTS
两个数据框中都有五列具有相关信息。列SiO2,FeO,MnO,CaO和MgO。我想将来自df1的数据绘制为点,将来自df2的数据绘制在同一图上的线上。我使用以下代码成功完成了此操作。
p <- ggplot(data=NULL, aes(MgO, FeO)) +
geom_point(data=df1, aes(color=Depth, shape=Location, alpha=.5)) +
geom_line(data=df2)
我的问题是,我认为我可以使用两个for循环来绘制彼此相对的所有所需的列,即SiO2与CaO,MnO,MgO和FeO,然后是CaO与MnO,MgO ....
为此,我列出了所需的组件
Olivine_components <- c('MgO', 'SiO2', 'FeO', 'MnO', 'CaO')
然后,写了我的for循环。
for (j in 1:5) {
for (i in 2:5) {
p <- ggplot(data=NULL, aes(Olivine_components[i], Olivine_components[j])) +
geom_point(data=df1, aes(color=Depth, shape=Location, alpha=.5)) +
geom_line(data=df2)
ggsave (p, filename=paste(Olivine_components[i], "_", Olivine_components[j],
"probe_and_MELTS", ".png", sep=""))
}
}
我没有得到看起来像所需情节的情节,而是得到了这个情节