我有一个简单的条形图,如果与它相关的值是正数或负数,我想更改条形的颜色。我还想更改 Y 标签以使用不同的标签而不是数字。例如,如果 Y 值是温度,我想将负值设为蓝色,将正值设为红色。然后在 Y 标签上,我希望它显示“冷”,而不是 -100。
\begin{tikzpicture}
\begin{axis}[
ybar,
grid=both,
bar width=24pt,
ylabel near ticks,
yticklabel pos=right,
symbolic x coords={A,B,C,D,E,F},
]
\addplot[fill=blue] coordinates {
(A, -45)
(B, -58)
(C, -43)
(D, 35)
(E, 19)
(F, 65)
};
\end{axis}
\end{tikzpicture}
我如何实现这个目标?
答案1
这不是自动的,但您可以将数据拆分成两个\addplot
,一个是蓝色列,另一个是红色列。您将需要bar shift=0pt
,否则pgpflots
将在每个坐标处为两个条形腾出空间。
我不太明白你关于标签的意思,所以如果你再回头检查的话,如果我的理解有误,请纠正我。
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
grid=both,
bar width=24pt,
bar shift=0pt, %% <-- added
ylabel near ticks,
yticklabel pos=right,
symbolic x coords={A,B,C,D,E,F},
ytick={-50,0,50}, %% <-- added
yticklabels={\textcolor{blue}{Cold},0,\textcolor{red}{Warm}}, %% <-- added
]
\addplot[fill=blue] coordinates {
(A, -45)
(B, -58)
(C, -43)
};
\addplot[fill=red] coordinates {
(D, 35)
(E, 19)
(F, 65)
};
\end{axis}
\end{tikzpicture}
\end{document}