我有一张带有几条条形的条形图。
\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}