pgfplots:减少刻度数

pgfplots:减少刻度数

我正在绘制包含大量数据的直方图:

\pgfplotstableset{col sep=semicolon}
\begin{tikzpicture}
  \begin{axis}[
    ybar interval,
  ]
    \addplot+[hist={bins=200}] table[y index=0] {FILENAME};
  \end{axis}
\end{tikzpicture}

不幸的是,pgfplots 生成的 x 轴非常丑陋,其中 xticks 打印得太靠近,以至于它们重叠而你无法读取任何内容。

如何减少刻度数?例如,仅显示每第 n 个刻度。

答案1

对于具有如此大量箱体的直方图,ybar interval作为axis选项并不是理想的选择。ybar interval如果将 传递给轴,将为每个箱体放置一个标签,并在每对箱体之间绘制一条垂直线;通常用于查找有用标签数量的算法在这里不适用。对于您来说,只需在轴选项中省略ybar interval(或提供)即可获得更好的结果。请注意,由于您使用的是 ,因此样式是为单个图设置的,但作为绘图选项,它不会影响标签的位置:ybarybar intervalhist

hist/data min可以通过添加垂直网格线并选择、hist/data max和来稍微改进一下图表,hist/bins这样箱子就可以与网格线对齐:

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

\begin{document}

\pgfplotstableset{col sep=semicolon}
\begin{tikzpicture}
  \begin{axis}[
    enlarge x limits=false,
    enlarge y limits=upper,
    axis lines*=left,
    xmajorgrids,
    grid style={white,ultra thin},
    axis on top,
    tick align=outside
  ]
    \addplot [
        hist={bins=150, data min=0, data max=15},
        fill=black!75, draw=none
    ] table [y index=0] {data.csv};
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容