大数据可视化中容易犯的错误翻译
Common Plotting Pitfalls that get Worse with large data说在前面在看"Mastering Python for Finance"这本书的时候,作者推荐了一个收集有趣的Jupyter notebook的集合,其中涵盖的门类非常广。 其中由James A. Bednar撰写的一篇文章,介绍在可视化大量数据的时候容易犯的错误。利用Jupyter notebook直观而且容易分享和展示的特点,Bednar直观地讨论了这些很容易掉入,但不容易意识到的陷阱。 原文链接 在利用可视化(Visualization)方法来从数据(通常极大量,以至于我们不可能一个个地分析每个数据点)中获取信息的过程中,我们可能会沉浸在绘制的细节中,从而过快地下结论,而不对这些结论产生应有的怀疑。但是事实上,我们往往因为某些绘图参数的偶然性,进入到一些陷阱中,从而产生了错误的观察和错误的结论。了解这些常见的陷阱,合理地怀疑和推敲自己的结论,才能挖掘数据中的金子,而不是垃圾。 原文开始我们会在这篇文章中讨论: Overplotting(过密绘图)Oversaturation(过饱和)Undersampling(采样不足)Undersaturation(欠饱和)Underutilized range(未充分利用灰度范围)Nonuniform colormapping(非均匀颜色映射),以及如何减轻或者消除他们。 依赖安装我们将会需要这些包,可以运行下面的命令安装: conda install -c bokeh -c ioam holoviews colorcet matplotlib scikit-image1. Overplotting我们首先将来自两个不同来源的数据集绘制在同一坐标系下--A图中的点和B图中的点。出人意料的是,先画A还是先画B,我们看到的结果非常不同。 def blues_reds(offset=0.5,pts=300): blues = (np.random.normal( offset,size=pts), np.random.normal( offset,size=pts), -1*np.ones((pts))) reds = (np.random.normal(-offset,size=pts), np.random.normal(-offset,size=pts), 1*np.ones((pts))) return hv.Points(blues, vdims=['c']), hv.Points(reds, vdims=['c'])blues,reds = blues_reds()blues + reds + reds*blues + blues*reds C图和D图显示的是同一组数据,但是给人截然不同的印象:在C图中蓝色的点显得更多,而在D图中红色的点显得更多。单凭C图或者D图,我们就会得到错误的结论。实际上两种点同样多,这里在作祟的是occlusion(闭塞)。 一个数据集被另一个数据集闭塞时,叫做overplotting(过密绘图,没有找到翻译,译者自己创造的)或者overdrawing,任何时候我们将一个点或者一条线叠加在另一个点或者另一条线上,都可能发生。不仅是散点图,曲线图、3D曲面图等等都会出现occlusion。 2. Oversaturation可以通过减小alpha值来减轻过密绘图。alpha是绘图软件上提供的控制透明度的参数,例如:如果alpha是0.1,当十个数据点重合的时候,涂色达到饱和。这样以来,绘图顺序的影响会变小,但是看清每个点变得更加困难。 ...