R 以网格方式排列循环生成的多个GGPLOT。排列或镶嵌面_包裹方式

R 以网格方式排列循环生成的多个GGPLOT。排列或镶嵌面_包裹方式,r,ggplot2,R,Ggplot2,我有一个数据集,我想用镶嵌面包裹或网格排列的方式将列彼此相对地绘制出来。我的数据集称为SardF.plot: str(SardF.plot) 'data.frame': 42 obs. of 22 variables: $ Sample : chr "Kx V17" "Mu V17" "Ob V17" "Vä V17" ... $ Mill : chr "Kx" "Mu" "Ob" "Vä" ... $ Halfyear: chr "V17" "V17" "V17" "V17

我有一个数据集,我想用镶嵌面包裹或网格排列的方式将列彼此相对地绘制出来。我的数据集称为SardF.plot:

str(SardF.plot)
'data.frame':   42 obs. of  22 variables:
$ Sample  : chr  "Kx V17" "Mu V17" "Ob V17" "Vä V17" ...
$ Mill    : chr  "Kx" "Mu" "Ob" "Vä" ...
$ Halfyear: chr  "V17" "V17" "V17" "V17" ...
$ pH      : num  12.4 11.56 9.84 12.84 10.68 ...
$ Na      : num  59199 22604 9095 30052 18014 ...
$ K       : num  5547 1994 1345 8238 1276 ...
$ Ca      : num  23.6 17.6 68.4 22.2 17.9 ...
$ Cr      : chr  "0.90659967379114681" "1.6064235870083998E-2" "      
$ Ni      : num  0.0314 0.036 0.1208 0.0396 0.041 ...
$ Cu      : num  0.0786 0.4648 0.0656 0.4747 0.2705 ...
$ Zn      : num  0.244 0.384 0.269 0.748 0.205 ...
$ Cd      : num  0.00375 0.00339 0.0035 0.00216 0.00361 ...
$ Pb      : num  0.000654 0.00148 0.000644 0.008429 0.000576 ...
$ Na Fast : num  70848 53117 22256 84498 27894 ...
$ K Fast  : num  6392 4732 3238 9547 2158 ...
$ Ca Fast : num  175958 140652 150944 240352 141438 ...
$ Cr Fast : num  150 102 124 83 256 65 17 17 41 418 ...
$ Ni Fast : num  54.8 73.5 210.5 38.8 170.7 ...
$ Cu Fast : num  155 614 589 208 453 ...
$ Zn Fast : num  1493 5909 5145 2074 3582 ...
$ Cd Fast : num  6.02 14.25 12.67 7.36 14.47 ...
$ Pb Fast : num  27.2 47.2 11.1 23.4 16.5 9.6 3.1 8.2 12.5 30 ...
我想将第5列与第13列相对应,第6列与第14列相对应,等等。当所有绘图都具有相同的x(元素是包含Na Pb的向量)时,我已成功地使用了facet_wrap:

我可以成功地生成我想要的图作为单独的图,并使用for循环保存它们:

for (j in 0:1)
{  
setwd("\\\\orunet\\dfs\\home07\\nse\\my documents\\LS lakningar\\R bilder\\mg ut per kg mot fast Sardinia") 
for (i in 5:13)
{
    Fast <- i+9
    myplot<-ggplot(SardF.plot) +
    geom_point( aes(x=SardF.plot[[Fast]], y=as.numeric(SardF.plot[[i]]), colour=Mill, shape=Halfyear), size=3 ) + 
    ggtitle(colnames(SardF.plot[i])) +
    xlab("mg/kg in solid GLD") +
    ylab("mg leached/kg GLD") +
    theme(plot.title = element_text(hjust = 0.5), 
        legend.title = element_blank()
    ) 
    ID <-colnames(SardF.plot[i])
    ggsave(myplot, filename=paste(ID,".jpeg",sep=""), width = 16, height = 15, units = "cm")
    }
    setwd("\\\\orunet\\dfs\\home07\\nse\\my documents\\LS lakningar") 
 }
for(0:1中的j)
{  
setwd(\\\\orunet\\dfs\\home07\\nse\\my documents\\LS lakningar\\R bilder\\mg ut/kg非快速撒丁岛)
(我在5:13)
{

Fast这里是一个简化的示例。首先,我创建一个虚拟数据框(因为您没有提供任何复制和可复制的数据)。在这个示例中,我将绘制第1列与第9列、第2列与第10列、第3列与第11列的对比图,等等,但您可以轻松地将其应用于特定情况

#虚拟数据帧

df这里是一个简化的示例。首先,我创建了一个虚拟数据框(因为您没有提供任何副本和可复制的数据)。在这个示例中,我将绘制第1列与第9列、第2列与第10列、第3列与第11列的图,等等,但您可以轻松地将其应用于特定情况

#虚拟数据帧


df创建一个绘图列表。
plot\u list=list()
在循环之前和
plot\u list[[i]]@Nanna:不建议按列号进行分析,因为顺序可能会改变,从而产生不希望的结果。最好使用列名匹配。请参见以下示例:&@Gregor在循环中使用Plot_list不起作用,它只保存最后一个Plot。标题改变,实际内容相同。因此,如果我使用Plot_list$Na我得到的是Pb(循环中的最后一个)的绘图,但标题是“Na”@Tung我想进行名称匹配,但不幸的是,这些示例对我来说只是高级的。第二个示例我甚至无法理解代码,而第一个示例我认为不适用,我希望所有示例的颜色和形状都相同,只是x和y发生了变化,示例中的代码对我来说是高级的“反向工程”来解决我的情况,但实际上没有看到绘图。很抱歉,你是对的,列名匹配更好,但我只是不足以让它工作。制作一个绘图列表。
plot\u list=list()
在循环之前和
plot\u list[[I]]@Nanna:不建议按列号进行分析,因为顺序可能会改变,从而产生不希望的结果。最好使用列名匹配。请参见以下示例:&@Gregor在循环中使用Plot_list不起作用,它只保存最后一个Plot。标题改变,实际内容相同。因此,如果我使用Plot_list$Na我得到的是Pb(循环中的最后一个)的绘图,但标题是“Na”“@Tung我想进行名称匹配,但不幸的是,这些示例对我来说太高级了。第二个示例我甚至无法理解代码,第一个示例我认为不适用,我希望所有示例的颜色和形状都相同,只是x和y发生了变化,示例中的代码对我来说太高级了“反向工程”用于我的情况,但没有实际查看绘图。很抱歉,您的说法是对的,列名匹配更好,但我只是不够好,无法让它工作。我无法让它工作。或者我得到一个错误“解析中出错(text=x)::1:4:意外符号”,或者如果我使用aes而不是aes\u字符串并删除名称(),我得到:is.finite(x)中出错:未为类型“list”实现默认方法“。我似乎没有办法保存循环生成的绘图。@Nanna如果你将上面的代码复制并粘贴到一个新的会话中,它是否如图所示工作?@Lyngbakr,如果我复制代码伪df,所有代码运行时没有错误或警告,但绘图窗口中没有显示绘图(我使用R studio)。虽然创建了df,但df_plot似乎仍然包含我的数据(正如我第一次尝试使用SardF.plot而不是伪df时从原始数据框SardF.plot中选择的列一样)。这只是对您的数据创建的一个建议,
df=as.data.frame(replicate(16,runif(10))
。如果您也想要名称
names(df)=字母[1:16]
df_plot
是在调用
myplot
时创建的临时数据帧,但之后不会继续存在。它在代码运行后不应该存在。应该存在的是
plist
–即绘图列表。我无法让它工作。或者我得到了一个错误“error in parse”(text=x)::1:4:意外符号“或者如果我使用aes而不是aes_字符串并删除名称(),我会得到:“is.finite(x)中的错误:未为类型'list'实现默认方法”。我似乎没有办法保存循环生成的绘图。@Nanna如果您将上面的代码复制并粘贴到新会话中,它是否如图所示工作?@Lyngbakr,如果我复制代码伪df,所有代码运行时没有错误或警告,但绘图窗口中没有显示绘图(我使用R studio)。虽然创建了df,但df_plot似乎仍然包含我的数据(正如我第一次尝试使用SardF.plot而不是伪df时从原始数据框SardF.plot中选择的列一样)。这只是对您的数据创建的一个建议,
df=as.data.frame(replicate(16,runif(10))
。如果您也想要名称
names(df)=字母[1:16]
df_plot
是一个临时数据框,在调用
myplot
时创建,但之后不会持久存在。它在代码运行后不应该存在。应该存在的是
plist
——即绘图列表。
for (j in 0:1)
{  
setwd("\\\\orunet\\dfs\\home07\\nse\\my documents\\LS lakningar\\R bilder\\mg ut per kg mot fast Sardinia") 
for (i in 5:13)
{
    Fast <- i+9
    myplot<-ggplot(SardF.plot) +
    geom_point( aes(x=SardF.plot[[Fast]], y=as.numeric(SardF.plot[[i]]), colour=Mill, shape=Halfyear), size=3 ) + 
    ggtitle(colnames(SardF.plot[i])) +
    xlab("mg/kg in solid GLD") +
    ylab("mg leached/kg GLD") +
    theme(plot.title = element_text(hjust = 0.5), 
        legend.title = element_blank()
    ) 
    ID <-colnames(SardF.plot[i])
    ggsave(myplot, filename=paste(ID,".jpeg",sep=""), width = 16, height = 15, units = "cm")
    }
    setwd("\\\\orunet\\dfs\\home07\\nse\\my documents\\LS lakningar") 
 }