![使用 pgfplots 和 includestandalone 生成的图形大小不一样,即使缩放比例相同](https://linux22.com/image/428499/%E4%BD%BF%E7%94%A8%20pgfplots%20%E5%92%8C%20includestandalone%20%E7%94%9F%E6%88%90%E7%9A%84%E5%9B%BE%E5%BD%A2%E5%A4%A7%E5%B0%8F%E4%B8%8D%E4%B8%80%E6%A0%B7%EF%BC%8C%E5%8D%B3%E4%BD%BF%E7%BC%A9%E6%94%BE%E6%AF%94%E4%BE%8B%E7%9B%B8%E5%90%8C.png)
在我的项目中,我有几个显示数据的图表/图形。我得到的要求是在主文档的文本和所有图形中使用相同的字体。因此,我决定使用 pgfplots/tikz 来绘制我的图表,但遇到了几个问题。
当包含两个以相同方式生成(见下文)并使用相同宽度的图形时,它们的高度不相等(如下图所示)。这是为什么?我如何才能强制它们的大小(高度和宽度)相等?
为了演示这个问题,我在下面创建了一个小型 MWE。它使用三个文件,、main.tex
和sub.tex
:sub2.tex
main.tex:
\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{file1.dat}
x y
0 0
1 1
2 2
3 3
4 4
5 5
\end{filecontents*}
\begin{filecontents*}{file2.dat}
x y
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
11 121
12 144
\end{filecontents*}
\usepackage{subcaption}
\pgfplotsset{every axis/.append style={
label style={font=\LARGE\bfseries},
tick label style={font=\LARGE}
},
y axis/.append style={align=center}}
\begin{document}
\begin{figure}[htpb]
\begin{subfigure}[t]{0.45\linewidth}
\includestandalone[width=\linewidth, mode=buildnew,
]{sub}\caption{Image I}
\end{subfigure}\hfill
\begin{subfigure}[t]{0.45\linewidth}
\includestandalone[width=\linewidth, mode=buildnew,
]{sub2}\caption{Image II}
\end{subfigure}
\end{figure}
\end{document}
sub.tex:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{file1.dat}{\tablea}
\begin{tikzpicture}
\begin{axis}[
ymin=0, ymax=30,
xmin=0, xmax=5,
xlabel={$x$},
ylabel={$y$},
grid=major,
legend entries={\(y_1\),\(y_2\),\(y_1+y_2\)},
legend pos = north west
]
% Select appropriate columns
\addplot [blue, mark=*] table [x=x,y=y] {\tablea};
\end{axis}
\end{tikzpicture}
\end{document}
sub2.tex:
\documentclass[tikz]{standalone}
\usepackage{tikz}Screenshot_20210208_175745.png
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{file2.dat}{\tablea}
\begin{tikzpicture}
\begin{axis}[
ymin=0, ymax=90,
xmin=0, xmax=10,
xlabel={$x$},
ylabel={$y$},
grid=major,
legend entries={\(y_1\),\(y_2\),\(y_1+y_2\)},
legend pos = north west
]
% Select appropriate columns
\addplot [blue, mark=*] table [x=x,y=y] {\tablea};
\end{axis}
\end{tikzpicture}
\end{document}
导致
人们可能会注意到,虽然左边的图形是以相同的方式生成的,并且两个图形都被设置为相同的宽度,但是左边的图形略高于右边的图形。