我试图将三个图形并排放置。然后这些图形可以使用相同的 y 轴标签来节省空间。我遇到的问题是我必须手动放置图形之间的空间。例如,反复更改值并测量以确保它们间距相等。其次,标题 (a) 的位置位于其图形下方的中心,但与其他两个不匹配。
我尝试过 \hspace 和 \hfill 的许多不同组合,但似乎无法让任何东西正常工作。然后是另一个问题(我没有提供代码以保持帖子简短),当添加 tikz 图例时,第一个图形会略微垂直移动。这是在使用相同代码但添加\addlegendimage
和时\addlegendentry
这是我的代码的MWE:
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage[]{subcaption}
\begin{document}
\begin{figure}
\centering
\subcaptionbox{\centering}[0.33\textwidth]{\input{picture_with_label.tikz}}%
\subcaptionbox{\centering}[0.33\textwidth]{\input{picture.tikz}}%
\subcaptionbox{\centering}[0.33\textwidth]{\input{picture.tikz}}
\caption{A long caption describing all the figures.}
\end{figure}
\end{document}
tikz 图片是:
\begin{tikzpicture}
\begin{axis}[
height=\linewidth,
width=\linewidth,
ymajorticks = false,
]
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\end{axis}
\end{tikzpicture}
带标签的图片的唯一区别是,下面的行被替换为 。ylabel={y}
代替ymajorticks = false
。
答案1
这看起来像是 groupplots 的工作(pgfplots 手册中的第 5.8 节)。
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage[]{subcaption}
\usepgfplotslibrary{groupplots}
\usepackage{showframe}% alignment tool
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[group style={columns=3, horizontal sep=\columnsep},
width=0.26\textwidth,
scale only axis,
xlabel={\parbox[t]{0.26\textwidth}{\subcaption{}}}]% overkill
\nextgroupplot[ylabel={y}]% xlabel={(a)}
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\nextgroupplot[ymajorticks=false]% xlabel={(b)}
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\nextgroupplot[ymajorticks=false]% xlabel={(c)}
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\end{groupplot}
\end{tikzpicture}
\caption{A long caption describing all the figures.}
\end{figure}
\end{document}
答案2
虽然我不会走你的路,但这是其中一种方法。
首先,减少图内的宽度,这是我通过反复试验(即迭代)获得的:
% picture.tikz.tex
\begin{tikzpicture}
\begin{axis}[
height=.4\linewidth,
width=.4\linewidth,% <<<<<<<<<<<<<<<
ymajorticks = false,
]
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\end{axis};
\end{tikzpicture}
和
% picture_with_label-tikz.tex
\begin{tikzpicture}
\begin{axis}[
height=.4\linewidth,
width=.4\linewidth,% <<<<<<<<<<<
ylabel={y}
]
\addplot [draw=black, fill=black, mark=*, only marks,mark size=1pt]
table{%
x y
0.459039921422644 0.491633026121641
0.485966183237016 0.502572005351635
};
\end{axis};
\end{tikzpicture}
第二,使用subfigure
。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{subfigure}
\begin{document}
\begin{figure}
\centering
\subfigure[a.plot]{\input{picture_with_label.tikz}}
\subfigure[b-plot]{\input{picture.tikz}}
\subfigure[c-plot]{\input{picture.tikz}}
\caption{A long caption describing all the figures.}
\end{figure}
%\tikz{
% \matrix{
% \input{picture_with_label.tikz} &
% \input{picture.tikz} &
% \input{picture.tikz}\\
% };
%}
\end{document}
下面注释的部分显示了 tikz 的方式。例如,您可以在那里设置列 sep 作为选项。要使其工作,请在您的 plotfiles 中删除\begin
和\end{tikzpicture}
。当然,您需要将和和放入\nodes {};
模仿子标题,并自己照顾图形计数器 ;-)
\matrix
对于 tikz 来说\tabular
,就如同对于 Latex 一样,因此它们使用相同的语法。例如,子 cap 行可以读取此矩阵环境中的内容:
\node {a-plot}; & \node {b-plot}; & \node {c-plot}; \\
观察;
,因为每个单元格都是一个有效的 tikz 语句。