是否可以在 PGFPlots 中以对数 x 轴为单位制作直方图,并使用大小相等(在对数空间中)的箱体?仅使用semilogxaxis
和hist
会按预期失败。显然,没有办法手动指定箱体边缘。我可以事先进行对数转换并调整标签,但这样我就会丢失对数间隔的 x 小刻度。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepgfplotslibrary{statistics}
\begin{document}
\begin{tikzpicture}
\begin{semilogxaxis}
\addplot [fill=gray, samples=200, hist] table [row sep=\\,y index=0] {1\\ 2\\ 1\\ 5\\ 4\\ 10\\ 7\\ 10\\ 9\\ 8\\ 9\\ 9\\};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
在对数空间中寻找等距的箱子,而不是我们下面看到的:
更新
我可以通过预先转换和操作标签和刻度来实现这一点。我将问题保留,希望找到一种解决方案,避免预处理和烘焙刻度标记位置和标签。
\begin{axis}[xtick={0,1},xticklabels={$10^0$,$10^1$},minor xtick={0.301,0.477,0.602,0.699,0.778,0.845,0.903,0.954,1.000}]
% source data: 1\\ 2\\ 1\\ 5\\ 4\\ 10\\ 7\\ 10\\ 9\\ 8\\ 9\\ 9\\
\addplot [fill=gray, samples=200, hist] table [row sep=\\,y index=0] {0.00\\ 0.30\\ 0.00\\ 0.70\\ 0.60\\ 1.00\\ 0.85\\ 1.00\\ 0.95\\ 0.90\\ 0.95\\ 0.95\\}; % log10 transform
\end{axis}