我正在绘制包含大量数据的直方图:
\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
(或提供)即可获得更好的结果。请注意,由于您使用的是 ,因此样式是为单个图设置的,但作为绘图选项,它不会影响标签的位置:ybar
ybar interval
hist
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}