我正在绘制带有垂直条的表格,由于垂直条重叠,大型表格会给我带来麻烦。是否有选项可以自动调整条宽?
以下是产生重叠的代码:
\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}
使每个条形图的宽度为一个轴单位。axis
bar 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}