自动调整 ybar 宽度(重叠条形图)

自动调整 ybar 宽度(重叠条形图)

我正在绘制带有垂直条的表格,由于垂直条重叠,大型表格会给我带来麻烦。是否有选项可以自动调整条宽?

在此处输入图片描述

以下是产生重叠的代码:

\documentclass{standalone}
\usepackage{filecontents,pgfplots}

\begin{filecontents}{pistonkinetics.dat}
x y
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10  10
11  11
12  12
13  13
14  14
15  15
16  16
17  17
18  18
19  19
20  20
21  21
22  22
23  23
24  24
25  25
26  26
27  27
28  28
29  29
30  30
31  31
32  32
33  33
34  34
35  35
36  36
37  37
38  38
39  39
40  40
\end{filecontents}

\begin{document}
\begin{tikzpicture}{width=10cm,height=5cm}
\begin{axis}
\addplot+[ybar,mark=none] plot table{pistonkinetics.dat};
\end{axis}
\end{tikzpicture}

\end{document} black,fill=red

答案1

如果您使用的是较新版本的 PGFPlots(至少 1.8 版)并且您的条形图之间的距离相等,则可以在设置之前调用,以\pgfplotsset{compat=1.8}使每个条形图的宽度为一个轴单位。axisbar width=1

如果您使用的是旧版本的 PGFPlots,或者您的条形图宽度不尽相同,但您仍想避免任何间隙,则可以使用ybar interval。请注意,为此,您需要在数据文件末尾添加一个虚拟条目,否则最后一个条形图将会丢失(每个条形图都ybar interval需要一个起始值和结束值):


第一个例子的代码:

\documentclass[border=5mm]{standalone}
\usepackage{filecontents,pgfplots}

\begin{filecontents}{pistonkinetics.dat}
x y
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10  10
11  11
12  12
13  13
14  14
15  15
16  16
17  17
18  18
19  19
20  20
21  21
22  22
23  23
24  24
25  25
26  26
27  27
28  28
29  29
30  30
31  31
32  32
33  33
34  34
35  35
36  36
37  37
38  38
39  39
40  40
\end{filecontents}

\begin{document}
\begin{tikzpicture}{width=10cm,height=5cm}
\pgfplotsset{compat=1.8}
\begin{axis}
\addplot+[ybar,mark=none, bar width=1] plot table{pistonkinetics.dat};
\end{axis}
\end{tikzpicture}

\end{document}

第二个示例的代码:

\documentclass[border=5mm]{standalone}
\usepackage{filecontents,pgfplots}

\begin{filecontents}{pistonkinetics.dat}
x y
1   1
2   2
5   5
8   8
9   9
10  10
11  11
13  13
15  15
17  17
18  18
19  19
23  23
24  24
27  27
28  28
32  32
33  33
34  34
35  35
36  36
37  37
39  39
40  40
41  0
\end{filecontents}

\begin{document}
\begin{tikzpicture}{width=10cm,height=5cm}
\pgfplotsset{compat=1.8}
\begin{axis}
\addplot+[ybar interval,mark=none, bar width=1] plot table{pistonkinetics.dat};
\end{axis}
\end{tikzpicture}

\end{document}

相关内容