使用R中的for循环从两个不同的数据帧绘图

时间:2016-01-26 21:09:41

标签: r for-loop ggplot2

我在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)

This produces this beautiful plot.

我的问题是,我认为我可以使用两个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=""))   
  }
}

我没有得到看起来像所需情节的情节,而是得到了这个情节I get this plot

0 个答案:

没有答案