pgfplots 中 xticks 之间的水平间距

pgfplots 中 xticks 之间的水平间距

我想为我的硕士论文创建一个条形图。我在 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}

在此处输入图片描述

相关内容