【问题标题】:Discrete Scatter Plot Visualization离散散点图可视化
【发布时间】:2013-11-01 20:50:02
【问题描述】:

这是一个非常特殊的绘图请求,但我想要以非常特殊的方式查看数据。情况如下:

1) 我拥有的数据被分成 25 个 bin,每个 bin 包含 不同 个数据点。 bin 值越大,其内部的数据点数量就越少,粗略地说(这只是数据处理完成的结果)。

[9568, 10079, 10137, 10090, 10154, 10091, 10046, 10116, 9959, 9401, 7703, 5216, 3089, 1632, 854, 466, 221, 106, 63, 27, 12, 5, 1, 0]

2) 我可以访问 bin 值。

[ 0.02648645  0.09996368  0.1734409   0.24691813  0.32039536  0.39387258
  0.46734981  0.54082703  0.61430426  0.68778148  0.76125871  0.83473593
  0.90821316  0.98169038  1.05516761  1.12864483  1.20212206  1.27559928
  1.34907651  1.42255373  1.49603096  1.56950818  1.64298541  1.71646264]

我可以很容易地在 matplotlib 中生成一个 'errorbar' 类型的图(y 轴从半径缩放到下面的度数):

但是,这对于我想研究的内容并不是特别有洞察力。我真的很想知道每个箱内是否有角度值的“孤岛”,为此,我需要像散点图或 imshow/hexbin 类型图这样的东西,其中点的密度可以用颜色表示(至少在 imshow/hexbin 的情况下)。以下是用最小标记大小的常规散点图表示时发生的情况的示例:

有人知道生成这种可视化的好方法吗?

编辑:这可能有助于澄清一些事情。下图是前几个 bin 的直方图示例。箱中包含的数据似乎遵循某种分布(我之前提到过“岛屿”,因为我不排除分布中出现多个峰值的可能性)。我希望同时为所有 bin 可视化此分布。换句话说,有没有办法为每个 bin 绘制垂直温度图,并将它们都显示在同一个图上?

【问题讨论】:

  • 你为什么不想使用散点图?如果您的数据为 xy,您只需将 x 值限制为最近的 bin 中心并绘制数据。
  • 我不确定我明白你在说什么。
  • 我无法匹配您的绘图和您显示的数据...为什么不能使用 imshow?
  • 那是因为我没有包括所有的数据。我包含的是每个 bin 中数据点的 number 个以及 bin 值。它认为包含所有数据是个坏主意。
  • 小提琴情节是一个很好的方法。

标签: matplotlib visualization scatter-plot imshow


【解决方案1】:

cmets 中提到的小提琴情节很好地解决了我的问题。 Here's 在那里我找到了它的 python 实现——如果它最终包含在 matplotlib 中肯定会很好。 Overplotted 是以中值为中心的箱线图,包括第 2 和第 3 个四分位数。

【讨论】: