pgfplots:colorbar:将 y 标记右对齐

pgfplots:colorbar:将 y 标记右对齐

我在 pgfplots 中有一个颜色条,并且想将 y 刻度标签对齐到右侧。

使用

colorbar style={yticklabel style={align=right}}

对我没用。

左边的颜色条显示默认行为,右边的颜色条显示想要的行为,但代码很笨拙(见下面的 MWE)。

颜色条刻度标签对齐和不对齐

梅威瑟:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
hide axis,
scale only axis,
height=0pt,
width=0pt,
colorbar,
point meta min=-20,
point meta max=20,
colorbar style={
    height=10cm,
}]
\addplot [draw=none] coordinates {(0,0)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}%[xshift=2cm]
\begin{axis}[
hide axis,
scale only axis,
height=0pt,
width=0pt,
colorbar,
point meta min=-20,
point meta max=20,
colorbar style={
 yticklabel={$$},
    height=10cm,
}]
\addplot [draw=none] coordinates {(0,0)};
\end{axis}

\foreach \x [evaluate=\x as \xeval using 20-\x*4] in {0,1.25,...,10}
\node[anchor=east] at (1.75,-\x) {\pgfmathprintnumber{\xeval}};

\end{tikzpicture}
\end{document}![enter image description here][3]

答案1

我猜问题在于包含刻度标签的节点仅与单个刻度标签的宽度一样宽,因此即使你对齐它们right,也不会使它们与其他刻度对齐。

解决方法是先设置 ticklabel 节点的最小宽度,然后更改对齐方式:

colorbar style={
    height=10cm,
    yticklabel style={text width=width("$-20$"),align=right}
}

不过,您必须手动插入最宽的刻度标签width(".."),因此它不是完全自动的。

width(与vs.有关的注释\widthofpgf/TikZ 2.x 实现了一个宏\widthof来计算某些文本的宽度。这在版本 3 中被删除了,但是可以使用数学引擎width中定义的函数,pgf如上所示。但是包\widthof中定义了一个宏calc。)

下面我还添加了drawyticklabel style以说明这一点。

在此处输入图片描述

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
hide axis,
scale only axis,
height=0pt,
width=0pt,
colorbar,
point meta min=-20,
point meta max=20,
colorbar style={
    height=10cm,yticklabel style={draw,align=right}
}]
\addplot [draw=none] coordinates {(0,0)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
hide axis,
scale only axis,
height=0pt,
width=0pt,
colorbar,
point meta min=-20,
point meta max=20,
colorbar style={
    height=10cm,yticklabel style={draw,text width=width("$-20$"),align=right}
}]
\addplot [draw=none] coordinates {(0,0)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}%[xshift=2cm]
\begin{axis}[
hide axis,
scale only axis,
height=0pt,
width=0pt,
colorbar,
point meta min=-20,
point meta max=20,
colorbar style={
 yticklabel={$$},
    height=10cm,
}]
\addplot [draw=none] coordinates {(0,0)};
\end{axis}

\foreach \x [evaluate=\x as \xeval using 20-\x*4] in {0,1.25,...,10}
\node[anchor=east] at (1.75,-\x) {\pgfmathprintnumber{\xeval}};

\end{tikzpicture}
\end{document}

相关内容