R 以网格方式排列循环生成的多个GGPLOT。排列或镶嵌面_包裹方式
我有一个数据集,我想用镶嵌面包裹或网格排列的方式将列彼此相对地绘制出来。我的数据集称为SardF.plot: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
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")
}