我正在stacked ybar
根据一些数据创建一个图,这导致输入坐标未排序。这导致一些条形图之间出现间隙。这是一个错误吗?图不应该stacked ybar
知道所有的高度吗?如果没有,有没有简单的方法可以解决这个问题?我肯定会在我的程序中解决这个问题(我事先做了一些数据处理),但我觉得应该有一个简单的解决方案。
以下是一个示例文档:
\documentclass{scrartcl}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ybar stacked,
ymin = 0,
enlarge x limits
]
\addplot coordinates {
(1, 1)
(2, 2)
(3, 3)
};
\addplot coordinates {
(1, 1)
(3, 3) % 'wrong' order
(2, 2)
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这不是一个真正的答案,而是一个长评论......
在里面PGFPlots 手册 (v1.15) 第 4.5.9 节,第 94 页在密钥描述的末尾,stack plots
你可以找到以下文字:
堆栈图的当前实现是不是插入缺失的坐标。这意味着如果图具有不同的网格,则堆叠将失败。
结合您提供的稍作修改的示例(您可以在下面找到),应该可以很容易地解释当前实现的工作方式。因此,我认为您除了先对条目进行排序然后再声明之外别无选择coordinates
。
但是您提到了一些关于“您的程序”的内容,所以我认为您在外部创建数据。然后我会考虑将数据写入外部文件并通过 使用该数据\addplot table
。(我在这里不提供示例,因为您可以在此网站上找到很多示例。)
% used PGFPlots v1.15
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
% used to center the `nodes near coords' in stacked plots
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
ymin=0,
enlarge x limits,
nodes near coords,
point meta=\coordindex,
]
\addplot coordinates {
(1, 1)
(5, 2) % 'wrong' order
(3, 3)
};
\addplot coordinates {
(1, 1)
(4, 3) % 'wrong' order
(2, 2)
};
\end{axis}
\end{tikzpicture}
\end{document}