如何更改 PGFPlots 条形图中条形的颜色

如何更改 PGFPlots 条形图中条形的颜色

我有一张带有几条条形的条形图。

\begin{tikzpicture}
    \begin{axis}[ 
        xbar, xmin=0,
        xlabel={Percantage \%},
        symbolic y coords={{Bar 10}, {Bar 9}, {Bar 8}, {Bar 7}, {Bar 6}, {Bar 5}, {Bar 4}, {Bar 3}, {Bar 2}, {Bar 1}},
        ytick=data,
        yticklabel style={text width=7cm, align=right, font=\footnotesize},
        bar width=20pt,
        height=0.9\textwidth,
        nodes near coords,
        nodes near coords align={horizontal},
    ]
    \addplot coordinates {
        (4,{Bar 10})
        (4,{Bar 9}) 
        (20,{Bar 8}) 
        (22,{Bar 7}) 
        (29,{Bar 6}) 
        (30,{Bar 5}) 
        (32,{Bar 4}) 
        (35,{Bar 3}) 
        (39,{Bar 2}) 
        (43,{Bar 1}) 
    };
    \end{axis}
\end{tikzpicture}

单色条

现在我想突出显示一些条形图,例如条形图 1 和条形图 3。但是,当像这样更改图表时:

\addplot coordinates {
    (4,{Bar 10})
    (4,{Bar 9}) 
    (20,{Bar 8}) 
    (22,{Bar 7}) 
    (29,{Bar 6}) 
    (30,{Bar 5}) 
    (32,{Bar 4}) 
    (39,{Bar 2}) 
};
\addplot coordinates {
    (35,{Bar 3}) 
    (43,{Bar 1}) 
};

最终结果如下:

多色断条

我不知道我做错了什么......

答案1

并非所有的条形图都有yticklabel,因为ytick=data只有添加yticks和在坐标处的相应标签第一的 \addplot命令。请改用ytick distance=1

第二个\addplot命令看起来很奇怪,因为条形图被放置在下一个在坐标处彼此相邻。由于条形非常宽,因此看起来它们位于另一个坐标处。因此您需要使用 禁用“彼此相邻放置” /pgf/bar shift=0pt

% used PGFPlots v1.17
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        xbar,
        xmin=0,
        xlabel={Percantage \%},
        symbolic y coords={{Bar 10}, {Bar 9}, {Bar 8}, {Bar 7}, {Bar 6}, {Bar 5}, {Bar 4}, {Bar 3}, {Bar 2}, {Bar 1}},
%        ytick=data,             % <-- this caused the missing entries
        ytick distance=1,       % <-- added
        yticklabel style={text width=7cm, align=right, font=\footnotesize},
        bar width=20pt,
        height=0.9\textwidth,
        nodes near coords,
        nodes near coords align={horizontal},
        /pgf/bar shift={0pt},   % <-- doesn't place bars next to each other
    ]
        \addplot coordinates {
            (4,{Bar 10})
            (4,{Bar 9})
            (20,{Bar 8})
            (22,{Bar 7})
            (29,{Bar 6})
            (30,{Bar 5})
            (32,{Bar 4})
            (39,{Bar 2})
        };
        \addplot coordinates {
            (35,{Bar 3})
            (43,{Bar 1})
        };
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容