![带有颜色图边界框的 Tikz 轴与其他边界框不对齐](https://linux22.com/image/240081/%E5%B8%A6%E6%9C%89%E9%A2%9C%E8%89%B2%E5%9B%BE%E8%BE%B9%E7%95%8C%E6%A1%86%E7%9A%84%20Tikz%20%E8%BD%B4%E4%B8%8E%E5%85%B6%E4%BB%96%E8%BE%B9%E7%95%8C%E6%A1%86%E4%B8%8D%E5%AF%B9%E9%BD%90.png)
我在这里的最后一个问题是关于 tikz 轴与其他图片居中对齐。我得到了一个很好的答案。这个问题类似,但通过给定示例中的颜色图扩展了问题。
我想要将如下所示的 tikz-pgf-Graphs 组合起来,使其与主图对齐(在本例中为左侧图)。我使用 pgfplot-Manual 中“4.2.8 使用外部图形作为绘图源”一章中所述的外部绘图。为简单起见,我删除了最小示例中的图片。
我最后一次邮政我了解到,我可以使用“向左修剪轴,向右修剪轴”将图形与其他居中图片对齐。当然,这不适用于我示例中的色图。我必须使用外部创建的颜色图,因为 tikz 版本生成的文件太大了,正如我的观点。
如何缩小左侧图的边界框?顺便问一下,这是定位的正确方法吗?或者您有什么建议?
例子:
\documentclass{scrartcl} % Dokumentenklasse
\usepackage[decimalsymbol=comma]{siunitx} % SI-Einheiten einheitlich setzen
\usepackage{pgfplots} % Import der Plots aus Matlab
\usepackage{tikz} % Import der Plots aus Matlab
\usetikzlibrary{plotmarks} % Import der Plots aus Matlab
\newlength\fheight % Plots aus Matlab immer gleich gross
\newlength\fwidth % Plots aus Matlab immer gleich gross
\setlength\fheight{6cm} % Plots aus Matlab immer gleich gross
\setlength\fwidth{8cm} % Plots aus Matlab immer gleich gross
\pgfplotsset{ % Komma statt Punkt als Dezimaltrennzeichen
x tick label style={/pgf/number format/use comma},
y tick label style={/pgf/number format/use comma}}
\listfiles
\begin{document}
My pgf version is: \pgfversion
\begin{figure}[!htb]
\begin{center}
\begin{tikzpicture}[]
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=2,
ymin=0, ymax=2,
xlabel={$x/\SI{}{\micro\meter}$},
ylabel={$y/\SI{}{\micro\meter}$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\hspace{10mm}
\begin{axis}[
axis on top,
at=(plot1.right of south east), anchor=left of south west,
width=0.0675676\fwidth, height=1\fheight,
scale only axis,
xmin=0, xmax=1,
ymin=-30, ymax=50,
xtick=\empty, yticklabel pos=left,
ylabel={$h(x,y)/\SI{}{\nano\meter}$}]
% \addplot graphics [xmin=0, xmax=1, ymin=-30, ymax=50]
% {../versuche/b_v610/step36_ende/ende_afm/detail_afm-colorbar1.eps};
\end{axis}
\end{tikzpicture}
\end{center}
\end{figure}
\begin{figure}[!htb]
\begin{center}
\begin{tikzpicture}
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=5,
ymin=0, ymax=5,
xlabel={$x$},
ylabel={$\sum_i x^2$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}
答案1
您仍然可以使用trim
TikZ 的功能:trim axis left
只是 的简写trim left=(current axis.west)
。由于您可以命名轴,因此可以指定要使用哪个轴进行修剪。对于您的情况,您可以tikzpicture
使用修剪上部trim left=(plot1.west)
,将小侧图命名为,并使用plot2
修剪下部tikzpicture
trim left=(plot1.west),trim right=(plot2.east)
。在这种情况下,您添加下方地块右侧的空间,因此它看起来与上方两块地块的宽度相同。
\documentclass{scrartcl} % Dokumentenklasse
\usepackage[decimalsymbol=comma]{siunitx} % SI-Einheiten einheitlich setzen
\usepackage{pgfplots} % Import der Plots aus Matlab
\usepackage{tikz} % Import der Plots aus Matlab
\usetikzlibrary{plotmarks} % Import der Plots aus Matlab
\newlength\fheight % Plots aus Matlab immer gleich gross
\newlength\fwidth % Plots aus Matlab immer gleich gross
\setlength\fheight{6cm} % Plots aus Matlab immer gleich gross
\setlength\fwidth{8cm} % Plots aus Matlab immer gleich gross
\pgfplotsset{ % Komma statt Punkt als Dezimaltrennzeichen
x tick label style={/pgf/number format/use comma},
y tick label style={/pgf/number format/use comma}}
\listfiles
\begin{document}
My pgf version is: \pgfversion
\begin{figure}[!htb]
\centering
\begin{tikzpicture}[trim left=(plot1.west)]
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=2,
ymin=0, ymax=2,
xlabel={$x/\SI{}{\micro\meter}$},
ylabel={$y/\SI{}{\micro\meter}$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\hspace{10mm}
\begin{axis}[
name=plot2,
axis on top,
at=(plot1.right of south east), anchor=left of south west,
width=0.0675676\fwidth, height=1\fheight,
scale only axis,
xmin=0, xmax=1,
ymin=-30, ymax=50,
xtick=\empty, yticklabel pos=left,
ylabel={$h(x,y)/\SI{}{\nano\meter}$}]
% \addplot graphics [xmin=0, xmax=1, ymin=-30, ymax=50]
% {../versuche/b_v610/step36_ende/ende_afm/detail_afm-colorbar1.eps};
\end{axis}
\end{tikzpicture}
\end{figure}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}[trim left=(plot1.south west),trim right=(plot2.south east)]
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=5,
ymin=0, ymax=5,
xlabel={$x$},
ylabel={$\sum_i x^2$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案2
如果两个图必须放在一起,则可以将它们括在tabular
:
\begin{figure}[!htb]
\centering
\begin{tabular}{@{}l@{}}
\begin{tikzpicture}[]
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=2,
ymin=0, ymax=2,
xlabel={$x/\SI{}{\micro\meter}$},
ylabel={$\vphantom{\sum}y/\SI{}{\micro\meter}$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\hspace{10mm}%
\begin{axis}[
axis on top,
at=(plot1.right of south east), anchor=left of south west,
width=0.0675676\fwidth, height=1\fheight,
scale only axis,
xmin=0, xmax=1,
ymin=-30, ymax=50,
xtick=\empty, yticklabel pos=left,
ylabel={$h(x,y)/\SI{}{\nano\meter}$}]
% \addplot graphics [xmin=0, xmax=1, ymin=-30, ymax=50]
% {../versuche/b_v610/step36_ende/ende_afm/detail_afm-colorbar1.eps};
\end{axis}
\end{tikzpicture}
\\ % end of first row
\begin{tikzpicture}
\begin{axis}[
name=plot1,
scale only axis,
width=\fwidth,
height=\fheight,
xmin=0, xmax=5,
ymin=0, ymax=5,
xlabel={$x$},
ylabel={$\sum_i x^2$},
axis on top]
% \addplot graphics [xmin=0, xmax=22,
% ymin=0, ymax=2] {../versuche/b_v610/step36_ende/ende_afm/detail_afm.eps};
\end{axis}
\end{tikzpicture}
\end{tabular}
\end{figure}
注意\vphantom{\sum}
第一个图的 ylabel,以确保正确对齐。
答案3
这是我通过您的回答发现的:
问题是,
trim axis left, trim axis right
表现得像
trim right=(plot2.east), trim left=(plot2.west)
而不是削减主线情节。
我将颜色条命名为“plot2”并使用以下修剪命令:
trim right=(plot1.east), trim left=(plot1.west)