我想绘制 3 个评估的 2 个条形图。X 轴是符号,当您想要将标签置于 x 轴中央时,这似乎会引起很多问题。
除了中间的标签外,其他标签均未位于刻度值下方的中央。我认为这应该是一个相当简单的图。除了标签之外,图实际上就是我想要的。有人知道如何解决这个问题吗?
这是我的情节的 MWE
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots, pgfplotstable}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ymin=60,
ymax=100,
ybar,
enlarge x limits=0.4,
% bar width=1mm,
width=11.5cm,
height=10cm,
xlabel={Accuracy \%},
symbolic x coords={A $\rightarrow$ B,B $\rightarrow$ C,C $\rightarrow$ D},
xtick=data,
% bar shift=0pt
]
%50.0 entries are dummies otherwise the other labels do not even appear on the axis
\addplot[fill=orange] coordinates {(A $\rightarrow$ B,96.0)(B $\rightarrow$ C,50.0)(C $\rightarrow$ D,50.0)};
\addplot[fill=black] coordinates {(A $\rightarrow$ B,92.3)(B $\rightarrow$ C,50.0)(C $\rightarrow$ D,50.0)};
\addplot[fill=orange] coordinates {(B $\rightarrow$ C,88.9)};
\addplot[fill=black] coordinates {(B $\rightarrow$ C,73.6)};
\addplot[fill=orange] coordinates {(C $\rightarrow$ D,90.6)};
\addplot[fill=black] coordinates {(C $\rightarrow$ D,80.8)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
您有点误解了,不要使用虚拟值,而要使用其他addplot
s 中的实际数字,并完全删除最后四个\addplot
s。每个 s\addplot
代表一系列值,对于条形图,pgfplots
在每个 x 坐标处为所有系列留出空间。使用六个\addplot
s,pgfplots
为六个条形留出空间,但您只能在每个坐标处填充其中两个。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots, pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=60,
ymax=100,
ybar,
enlarge x limits=0.4,
% bar width=1mm,
width=11.5cm,
height=10cm,
xlabel={Accuracy \%},
symbolic x coords={A $\rightarrow$ B,B $\rightarrow$ C,C $\rightarrow$ D},
xtick=data,
% bar shift=0pt
]
\addplot[fill=orange] coordinates {(A $\rightarrow$ B,96.0)(B $\rightarrow$ C,88.9)(C $\rightarrow$ D,90.6)};
\addplot[fill=black] coordinates {(A $\rightarrow$ B,92.3)(B $\rightarrow$ C,73.6)(C $\rightarrow$ D,80.8)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您的尝试已经接近尾声。作为参考,请查看手册第 84 页上的示例pgfplots
。您需要更正要绘制的数据的组织方式。每个都addplot
需要给出 A->B、B->C 和 C->D 的连续坐标系列。
这是生成所需图形的代码。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots, pgfplotstable}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ymin=60,
ymax=100,
ybar,
enlarge x limits=0.4,
% bar width=1mm,
width=11.5cm,
height=10cm,
xlabel={Accuracy \%},
symbolic x coords={A $\rightarrow$ B,B $\rightarrow$ C,C $\rightarrow$ D},
xtick=data,
% bar shift=0pt
]
\addplot[fill=orange] coordinates {(A $\rightarrow$ B,96.0) (B $\rightarrow$ C,88.9) (C $\rightarrow$ D,90.6)};
\addplot[fill=black] coordinates {(A $\rightarrow$ B,92.3) (B $\rightarrow$ C,73.6) (C $\rightarrow$ D,80.8)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}