对于建议的条形图,我想为每个条形使用不同的颜色。我该怎么做?
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title=Title,
xbar,
xmajorgrids = true,
bar width=6mm,
width=12cm, height=5.5cm,
enlarge y limits=0.2,
xlabel={\#number},
symbolic y coords={A,B,C,D},
ytick=data,
nodes near coords, nodes near coords align={horizontal},
]
\addplot coordinates {(1,A) (7,B) (5,C)(2,D)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
从我的回答groupplot/barplot 中的颜色和图例:
为了给每个条形图赋予不同的颜色 (...),每个条形图都需要作为自己的图来处理,也就是说,每个条形图都需要自己的\addplot ...
命令。幸运的是,您不必写\addplot ...
四遍,而是可以使用\pgfplotsinvokeforeach {0,...,3} { \addplot ... }
。
我建议您在表中提供数据,可以在外部数据文件中,也可以在使用创建的宏中提供\pgfplotstableread
。这使得循环遍历数据变得更容易,并且使数据更易于维护(对于较大的数据集,坐标语法变得非常繁琐)。
此外,与使用符号坐标相比,我通常发现使用 绘制值\coordindex
和使用 创建标签更容易yticklabels from table
。
\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\begin{document}
\pgfplotsset{
select row/.style={
x filter/.code={\ifnum\coordindex=#1\else\def\pgfmathresult{}\fi}
}
}
\pgfplotstableread[header=false]{
1 A
7 B
5 C
2 D
}\datatable
\begin{tikzpicture}
\begin{axis}[
title=Title,
xbar, bar shift=0pt,
enlarge y limits=0.2,
xmin=0,
ytick={0,...,4},
yticklabels from table={\datatable}{1},
xmajorgrids = true,
bar width=6mm,
width=12cm, height=5.5cm,
xlabel={\#number},
nodes near coords, nodes near coords align={horizontal},
]
\pgfplotsinvokeforeach{0,...,4}{
\addplot table [select row=#1, y expr=#1] {\datatable};
}
\end{axis}
\end{tikzpicture}
\end{document}