区间为 (a,b) 而非 (0,a) 的 X-Bar 图

区间为 (a,b) 而非 (0,a) 的 X-Bar 图

当使用 绘制 xbar 图时pgfplots,条形图始终从 0 移动到请求的坐标。例如(pgfplots 手册第 78 页):

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xbar, xmin=0,
    width=12cm, height=3.5cm, enlarge y limits=0.5,
    symbolic y coords={no,yes},
    ytick=data,
    nodes near coords, nodes near coords align={horizontal},
]
\addplot coordinates {(3,no) (7,yes)};
\end{axis}
\end{tikzpicture}
\end{document}

但是,我希望条形图的间隔不同,比如说否:1 到 3,是:2 到 7。我在手册中没有找到任何可以立即应用于我的问题的内容。

答案1

您可以为此使用堆叠图,并使用以下方法使第一个系列不可见draw=none, forget plot

\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\begin{document}

\pgfplotstableread{
Lower Upper Name
1 3 no
2 7 yes
}\loadedtable

\begin{tikzpicture}
\begin{axis}[
    xbar, xmin=0,
    width=12cm, height=3.5cm, enlarge y limits=0.5,
    symbolic y coords={no,yes},
    ytick=data,xbar stacked,
    bar shift=0pt
]

\addplot [draw=none, forget plot] table [x=Lower, y=Name]{\loadedtable};
\addplot table [x expr=\thisrow{Upper}-\thisrow{Lower}, y=Name]{\loadedtable};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容