绘制大量的"线"作为阴影或颜色强度

时间:2018-05-24 12:29:37

标签: python pandas matplotlib data-visualization

我有各种大熊猫数据帧,其中包含多达2000个时间序列。显然,一个简单的df.plot()并没有真正显示任何有用的东西(并且需要几分钟的时间来绘制)。但至少我可以很容易地得到(和绘制)一个(滚动)的意思。简单的例子:

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 14), index=ts.index, columns=list('ABCDEFGHIJKLMN'))
mean_df = df.mean(1)
rolling_mean = mean_df.rolling(window = 60, center = True)
ax = df.plot(style=':')
rolling_mean.mean().plot(ax=ax)

enter image description here

通过这个小例子,人们可以看到底层数据"表现如何":

它在零附近相当对称,大多数数据在+1和-1之间,相当多的是在+1和+2之间,以及-1和-2之间,有些东西发生在2/3括号和一些异常值上升(或下降)到几乎+( - )4。

为什么人们可以轻松掌握这一点?显然,这是由于每个区域的线数,以及区域的强度或阴影。当我单色时变得更加清晰:

enter image description here

然而,这缺乏对密度或线数的量化。 我怎样才能把它变成定量的东西?

即。 2-4支架应该有不同深浅的浅灰色,1-2个中灰色,0-1深灰色,这样平均值就会放在图中几乎黑色的区域顶部,这样我最终会得到50灰色阴影,也许是一个颜色条来启动。

我可能会玩各种颜色的灰色作为基色,看看不同的alphas为更好的视觉效果设置了什么,但这看起来很糟糕。

另一个选择是执行max_df = df.max(1)min_df = df.min(1)之类的操作,然后使用matplotlib填充(plt.fill_between(df.index, min_df, max_df))并以某种方式重复此操作以获得各种级别(即1,与平均值相差2和3的标准差,这样我就会以某种连续的箱形图结束。

但我想知道是否有更好的方法来做到这一点。

另外:我不确定如何最好地描述我想要/需要的内容,所以,如果您对此问题有任何问题/意见,请发表评论,我会看到我可以编辑的内容让自己更清楚。

1 个答案:

答案 0 :(得分:0)

另一种可视化密度数据的方法是使用核密度估算:

df.plot.kde()
plt.xlim(-4,4)
plt.grid()
plt.show()

enter image description here