python - 将大量“线条”绘制为阴影或颜色强度
问题描述
我有各种熊猫数据框,其中包含多达 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)
通过这个小例子,我们可能会看到底层数据的“行为”:
它在零附近非常对称,大部分数据在 +1 和 -1 之间,相当多的数据在 +1 和 +2 之间,以及 -1 和 -2 之间,有些东西发生在 2/3 括号中,有些异常值上升(或下降)到几乎 +(-)4。
为什么很容易掌握这一点?显然,这是由于每个区域的线数,以及该区域的强度或阴影。当我去单色时变得更加清晰:
然而,这缺乏对密度或线数的量化。我怎样才能把它变成量化的东西?
即 2-4 括号应该有各种深浅不一的浅灰色、1-2 中灰色、0-1 深灰色,这样平均值就会放在图表中几乎黑色区域的顶部,所以我最终得到50 种灰色阴影,也许还有一个彩条。
我可能会玩弄各种深浅不一的灰色作为基色,看看设置不同的 alpha 会产生什么效果以获得更好的视觉效果,但这似乎很老套。
另一种选择是执行类似的操作max_df = df.max(1)
,min_df = df.min(1)
然后使用 matplotlib 在 ( plt.fill_between(df.index, min_df, max_df)
) 之间填充,并以某种方式对各种级别重复此操作(即,与平均值相差 1、2 和 3 个标准差),以便我以某种方式结束的连续箱线图。
但我想知道是否有更好的方法来做到这一点。
另外:我不确定如何最好地描述我想要/需要的东西,所以,如果您对此问题有任何疑问/意见,请发表评论,我会看看我可以编辑什么以使自己更清楚。
解决方案
推荐阅读
- php - 在视图文件 codeigniter 中显示数据时出现问题
- excel - VBA:在类模块中模拟 AddressOf 运算符的解决方法
- python - MacOS:在 High Sierra 上 brew install graph-tool
- redhat - 如何确定哪个版本的 yum 库与已安装的特定版本的依赖项兼容?
- prolog - Prolog - 检测有向图中连接节点的谓词
- c# - 使方法易于由第三方调用和配置的最佳方法
- asp.net-core - 在 VS 2019 预览版中没有可用于使用 .Net Core 3.0 的选项
- git - 收到 git push 错误:“您无法推送以下提交,因为它们是由作者姓名不知道 Stash 的用户创作的”
- javascript - 使用 MSE 将低延迟 avc/h264 视频流式传输到浏览器
- mysql - 错误 1109 (42S02):MULTI DELETE 中的未知表