![合并来自 tex 文件的多个 pgfplots](https://linux22.com/image/316064/%E5%90%88%E5%B9%B6%E6%9D%A5%E8%87%AA%20tex%20%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%9A%E4%B8%AA%20pgfplots.png)
我一直在使用 Sharelatex 撰写论文,并且积累了许多 pgfplots。在编译超时之前,我无法包含由 csv 文件生成的超过 ~6 个 pgfplots。我一直将我的图分成几个 tex 文件。有没有办法以一种简单的方式将它们全部组合在一起?我尝试搜索,似乎一个选项是将 pdf 文件转换为 png 并将图添加为图像,但我失去了图形的质量和清晰度(我尝试了 imagemagick,但对输出不满意)。我有什么选择,请提供建议。谢谢。
以下是多个组图中的一个(作为示例):
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{floatrow}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{fixltx2e}
\usepackage{siunitx}
\usepackage{lscape}
\usepackage{diagbox}
\usepackage{caption}
\usepackage{xcolor}
\usepackage[version=4]{mhchem}
\usepackage{subcaption}
\usepgfplotslibrary{groupplots}
\DeclareSIUnit{\molar}{M}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}[h]
\setlength{\abovecaptionskip}{15pt plus 3pt minus 2pt}
\begin{minipage}{\columnwidth}
\centering
\begin{tikzpicture}[scale = .65, transform shape,trim left]
\begin{groupplot}[
group style={
group size=2 by 3,
horizontal sep=0pt,
vertical sep=50pt
},
scale only axis,
xlabel={nm},
ylabel={Abs},
xmin=385, xmax=565,
xtick pos=left,
ytick pos=left,
no marks,
max space between ticks=1000pt,
try min ticks=4,
xlabel={},
ylabel={}
]
\nextgroupplot[title=\textbf{(a)} $15:60$ (TPPS\textsubscript{4}-\ce{2Cl}:\Lig{1})]
\addplot table [col sep=comma, x=nm, y=10] {ST053 1560 Por SG.csv};\label{1560porsg1}
\addplot table [col sep=comma, x=nm, y=100] {ST053 1560 Por SG.csv};\label{1560porsg2}
\addplot table [col sep=comma, x=nm, y=200] {ST053 1560 Por SG.csv};\label{1560porsg3}
\nextgroupplot[title=\textbf{(e)} $60:15$ (TPPS\textsubscript{4}-\ce{2Cl}:\Lig{1})]
\addplot table [col sep=comma, x=nm, y=10] {ST053 6015 Por SG.csv};
\addplot table [col sep=comma, x=nm, y=100] {ST053 6015 Por SG.csv};
\addplot table [col sep=comma, x=nm, y=200] {ST053 6015 Por SG.csv};
\nextgroupplot[title=\textbf{(g)} $60:15$ (TPPS\textsubscript{4}-\ce{2Cl}:Buffer)]
\addplot table [col sep=comma, x=nm, y=10] {ST053 6015 Por blank SG.csv};
\addplot table [col sep=comma, x=nm, y=100] {ST053 6015 Por blank SG.csv};
\addplot table [col sep=comma, x=nm, y=200] {ST053 6015 Por blank SG.csv};
\end{groupplot}
\node at ($(group c1r2.west)!0.5!(group c1r2.west)$)[xshift=-1.5cm]{\rotatebox{90}{\large{Absorption}}};
\node at ($(group c1r3.south)!0.5!(group c2r3.south)$)[yshift=-1.5cm]{\large{Nanometer}};
\end{tikzpicture}
\end{minipage}
\caption{Caption}
\end{figure}
\end{document}
答案1
我无法测试这个因为我无法编译你的例子,因为它本质上依赖于一个我没有的文件。但是,您希望您的绘图文件看起来像这样:
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{siunitx}
\usepackage{diagbox}
\usepackage[version=4]{mhchem}
\usepgfplotslibrary{groupplots}
\DeclareSIUnit{\molar}{M}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[scale = .65, transform shape, trim left]
\begin{groupplot}[
group style={
group size=2 by 3,
horizontal sep=0pt,
vertical sep=50pt
},
scale only axis,
xlabel={nm},
ylabel={Abs},
xmin=385, xmax=565,
xtick pos=left,
ytick pos=left,
no marks,
max space between ticks=1000pt,
try min ticks=4,
xlabel={},
ylabel={}
]
\nextgroupplot[title=\textbf{(a)} $15:60$ (TPPS\textsubscript{4}-\ce{2Cl}:\Lig{1})]
\addplot table [col sep=comma, x=nm, y=10] {ST053 1560 Por SG.csv};\label{1560porsg1}
\addplot table [col sep=comma, x=nm, y=100] {ST053 1560 Por SG.csv};\label{1560porsg2}
\addplot table [col sep=comma, x=nm, y=200] {ST053 1560 Por SG.csv};\label{1560porsg3}
\nextgroupplot[title=\textbf{(e)} $60:15$ (TPPS\textsubscript{4}-\ce{2Cl}:\Lig{1})]
\addplot table [col sep=comma, x=nm, y=10] {ST053 6015 Por SG.csv};
\addplot table [col sep=comma, x=nm, y=100] {ST053 6015 Por SG.csv};
\addplot table [col sep=comma, x=nm, y=200] {ST053 6015 Por SG.csv};
\nextgroupplot[title=\textbf{(g)} $60:15$ (TPPS\textsubscript{4}-\ce{2Cl}:Buffer)]
\addplot table [col sep=comma, x=nm, y=10] {ST053 6015 Por blank SG.csv};
\addplot table [col sep=comma, x=nm, y=100] {ST053 6015 Por blank SG.csv};
\addplot table [col sep=comma, x=nm, y=200] {ST053 6015 Por blank SG.csv};
\end{groupplot}
\node at ($(group c1r2.west)!0.5!(group c1r2.west)$)[xshift=-1.5cm]{\rotatebox{90}{\large{Absorption}}};
\node at ($(group c1r3.south)!0.5!(group c2r3.south)$)[yshift=-1.5cm]{\large{Nanometer}};
\end{tikzpicture}
\end{document}
然后,在主文档中,包含如下内容:
\begin{figure}
\centering
\includegraphics{myfabulousplot}
\caption{My Fabulous Plot}
\label{fig:fabplot}
\end{figure}
不要figure
在单独的图文件中使用环境。例如,.tex
你只需要单独的环境。tikzpicture
您也可以自动执行此操作。但是,如果您想避免超时,自动执行不是一个好主意。