调整 LaTeX 直方图的大小

调整 LaTeX 直方图的大小

我编写了这个 LaTeX 代码来生成直方图。出现的问题是直方图条重叠且看起来定义不明确,因为图中有很多坐标,即 1740。有没有办法调整图形大小以使其看起来尽可能清晰?以下是我的代码:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    ybar interval,
    xlabel={Feature},
    ylabel={Value},
    ymin=0,
    ymax=1,
    xtick=\empty,
    xticklabels=\empty,
    ytick=\empty,
    yticklabels=\empty,
    legend style={at={(0.5,-0.15)},
    anchor=north,legend columns=-1},
]
\addplot[ybar,fill=yellow] coordinates {(1,0.5673234066308034) (2,0.2610627037789374) (3,0.19810336628001157) (4,0.17819359523137376) (5,0.17591815359754182) (6,0.174282741730368) %other coordinate
(435,0.0701053325628252) };
\addplot[ybar,fill=gray] coordinates {(436,0.07006473264772355) (437,0.07001409888465146) (438,0.06996899553023585) 
%other coordinate
 (1740,0.02100317004724812) };
\legend{Selezionate, Non Selezionate}
\end{axis}
\end{tikzpicture}
\end{document}

答案1

据我了解,您在可视化过于密集的数据时遇到了问题。以下是我的分析:

  • ybar从s切换到ycombs(可以说是细条)并没有改变视觉重叠
  • 你根本无法分辨出 2000 个数据分布在 20 厘米 = 200 毫米的范围内,因此 1 个数据“条”的宽度约为 0.2 毫米 = 200 纳米,这属于紫外线波长范围,仅供参考
  • 由于分辨率有限,切换到线图或散点图也无济于事

为了验证并表明您的数据在原则上足够好,我将它们放在对数 x 尺度上:

半对数

修改后的代码:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=newest}

\begin{document}
 \begin{tikzpicture}
    \begin{semilogxaxis}[
    title={Demonstrating the visual problem: too many data},
    %    ybar interval,
    %    xlabel={Feature},
    %    ylabel={Value},
    %    ymin=0,
    %    ymax=1,
    %    xtick=\empty,
    %    xticklabels=\empty,
    %    ytick=\empty,
    %    yticklabels=\empty,
    %    legend style={at={(0.5,-0.15)},
    %    anchor=north,legend columns=-1},
    ycomb,
    ]
    \addplot[red] coordinates {(1,0.5673234066308034) (2,0.2610627037789374) (3,0.19810336628001157) (4,0.17819359523137376) (5,0.17591815359754182) (6,0.174282741730368) %other coordinate
    (435,0.0701053325628252) };
    \addplot[gray] coordinates {(436,0.07006473264772355) (437,0.07001409888465146) (438,0.06996899553023585) 
    %other coordinate
     (1740,0.02100317004724812) };
    \legend{Selezionate, Non Selezionate}
    \end{semilogxaxis}
 \end{tikzpicture}
\end{document}

因此,如果这个问题仍然存在,我建议改变可视化的方式。以下是针对不同解决方案的几种场景:

  • 拆分和复制:不要使用 1 个大(宽)图,而是使用多个图,每个图代表 200 个数据点(即 9 个图)
  • 少做一点:总结成类;使用直方图、箱线图或小提琴图(后者有一个新的包)来描述每个类
  • 匆匆浏览:提供 2 个分布,一个用于 Selezionate,一个用于 Non Sel。
  • 反转(某种):如果序列数字没有意义,请找到不同的方式来查看、感知和可视化您的数据;即,该图表真正想要表达什么?它唯一的关键信息是什么?

相关内容