我想为我的硕士论文创建一个条形图。我在 x 轴上有大量数字。问题是,x 轴刻度之间的空间与数字相对应,这当然是正确的。但它也会在 x 轴刻度之间产生巨大的空间,就像您在图片中看到的那样
那么,是否可以使 xticks 之间的空间相等以获得更好看的图形?
这是我的代码:
\begin{tikzpicture}[scale=1]
\begin{axis}[
ybar=1pt,
bar width=5pt,
xtick=data,
x tick label style={
/pgf/number format/1000 sep=
},
enlarge x limits=0.15,
ylabel={Daten[Bytes]},
xlabel={Page[Bytes]},
legend style ={at={(0.5,-0.15)}, anchor=north, legend columns=-1},
xmin=0,
% scale mode=scale uniformly,
width=10cm,
scale only axis,
xmode=normal,
% /pgfplots/max space between ticks=10
%nodes near coords,
%nodes near coords align={vertical}
]
\addplot table[x expr=\thisrowno{1}+16,y index=1] {\nsdata};
\addplot table[x expr=\thisrowno{1}+16,y index=0] {\nsdata};
\legend{Orignal, Komprimiert}
\end{axis}
下表为:
3408 4080
6548 8176
4792 16368
9084 32752
16608 65520
答案1
思路如下。我们x expr=\coordindex
首先使用 进行绘图。然后使用 是xtick={0,1,2,3,4}
上一行中使用的坐标索引。现在,我们使用第一列的数据作为 xtick 标签xticklabels from table={\nsdata}{[index]0},
。
以下是代码:
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotstableread{
3408 4080
6548 8176
4792 16368
9084 32752
16608 65520
}\nsdata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=1pt,
bar width=5pt,
xtick={0,1,2,3,4},
xticklabels from table={\nsdata}{[index]0},
x tick label style={
/pgf/number format/1000 sep=
},
enlarge x limits=0.15,
%scaled ticks=false,
ylabel={Daten[Bytes]},
xlabel={Page[Bytes]},
legend style ={at={(0.5,-0.15)}, anchor=north, legend columns=-1},
xmin=0,
% scale mode=scale uniformly,
width=10cm,
scale only axis,
xmode=normal,
% /pgfplots/max space between ticks=10
%nodes near coords,
%nodes near coords align={vertical}
]
\addplot table[x expr=\coordindex,y index=1] {\nsdata};
\addplot table[x expr=\coordindex,y index=0] {\nsdata};
\legend{Orignal, Komprimiert}
\end{axis}
\end{tikzpicture}
\end{document}