我正在并排绘制堆叠和非堆叠 ybar 图。我很难让两个图之间的 xticklabel 对齐。
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\pgfplotsset{every axis/.append style={
scale only axis=true,
xtick={0,1}, xticklabels={a, b},
height=2cm, width=2cm, xmin=-0.5, xmax=1.5,
xticklabel style={text height=1.5ex}% <-- to align the characters a and b with different height
}}
\begin{tikzpicture}
\begin{axis}[ybar stacked]
\addplot coordinates {(0,1) (1,1)};
\addplot coordinates {(0,0.5) (1,2)};
\end{axis}
\begin{axis}[ybar, shift={(2.8cm, 0)}]
\addplot coordinates {(0,1) (1,1)};
\addplot coordinates {(0,0.5) (1,2)};
\end{axis}
\end{tikzpicture}
\end{document}
这个基本设置失败是因为堆叠条形图默认不包含 xtick 标签,而其他条形图则包含:
我尝试通过设置major tick length=-1mm
堆叠图和major tick length=1mm
另一个图来解决此问题:
这修复了 x 刻度长度,但 x 刻度标签仍然未对齐。我还尝试调整传递给轴参数的节点参数xticklabel style={at={(...)}, anchor=...}
,但无济于事。
在这种情况下,如何获得对齐的刻度标签?
答案1
我猜你不是
由于堆叠条形图不包含xtick 标签默认情况下,而其他人则
你的意思是
由于堆叠条形图不包含横轴刻度默认情况下,而其他人则
但事实并非如此,正如你在 x 轴顶部看到的刻度看得到。如果还要在(下)x 轴上看到它们,只需添加axis on top
因为——正如选项所示——轴是在图上绘制的,而不是反过来。或者,您也可以不填充条形图。同样,您会看到刻度绘制.但默认情况下它们被绘制里面堆积条形图的轴(就像 y 轴一样)。
因此,简单的解决方案是强制绘制xticks
内部或外部。在下面的代码中,我选择只绘制xticks
内部。
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
every axis/.append style={
axis on top, % to show that `xticks` are drawn `inside`
xtick align=outside, % force all `xticks` to be drawn `outside`
scale only axis=true,
xtick={0,1},
xticklabels={a, b},
height=2cm,
width=2cm,
xmin=-0.5,
xmax=1.5,
% to align the characters a and b with different height
xticklabel style={
text height=1.5ex,
},
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar stacked]
\addplot coordinates {(0,1) (1,1)};
\addplot coordinates {(0,0.5) (1,2)};
\end{axis}
\begin{axis}[ybar, shift={(2.8cm, 0)}]
\addplot coordinates {(0,1) (1,1)};
\addplot coordinates {(0,0.5) (1,2)};
\end{axis}
\end{tikzpicture}
\end{document}