如何为 pgfplot 中的单个 ybar 着色?

如何为 pgfplot 中的单个 ybar 着色?

我制作了一个图表,但它根本不是我想要的。有两个问题让我很困扰:1.) 条形图应该位于底部,但它们与 x 轴之间有一个空格。2.) E1/E4、E2/E5 和 E3/E6 应该具有相同的颜色。

下面是一张它是什么样子以及我想要的样子的图片: 在此处输入图片描述

这是我的代码:

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
symbolic x coords={E1, E4 (dyn.), E2, E5 (dyn.), E3, E6 (dyn.)},
xtick=data,
width=\linewidth,
height=6cm
]
\addplot[ybar,fill=blue, bar width = 1cm] coordinates {
    (E1,   8)
    (E2,  15)
    (E3,   50)
    (E4 (dyn.), 4)
    (E5 (dyn.), 17)
    (E6 (dyn.), 40)

};
\end{axis}
\end{tikzpicture}
\end{document}

希望您能帮助我。谢谢。

答案1

要固定 y 轴,请添加ymin=0axis环境中。要获得不同的颜色,您可以将绘图分成 3 个,每个绘图都有不同的颜色。

编辑:我一定是瞎了。原始解决方案没有显示最后 4 个坐标的标签。要解决这个问题,xtick=data必须将 替换为xtickmin=E1, xtickmax=E6 (dyn.)

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=0,% added
symbolic x coords={E1, E4 (dyn.), E2, E5 (dyn.), E3, E6 (dyn.)},
%xtick=data, % replaced
xtickmin=E1, xtickmax=E6 (dyn.),
width=\linewidth,
height=6cm
]
% seperated into 3 plots
\addplot[ybar,fill=blue!50, bar width = 1cm] coordinates {
    (E1,   8)
    (E4 (dyn.), 4)
};
\addplot[ybar,fill=red!50, bar width = 1cm] coordinates {
    (E2,  15)
    (E5 (dyn.), 17)
};
\addplot[ybar,fill=green!50, bar width = 1cm] coordinates {
    (E3,   50)
    (E6 (dyn.), 40)
};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容