Seaborn tsplot 未显示 CI 波段

Posted

技术标签:

【中文标题】Seaborn tsplot 未显示 CI 波段【英文标题】:Seaborn tsplot not showing CI bands 【发布时间】:2015-05-23 06:26:14 【问题描述】:

我有一个示例数据框here(它是df 的泡菜)。当我执行以下操作时:

df = pd.read_pickle('test.pickle')
sns.tsplot(data=df.sort('time', ascending=True), time='time', unit='entity', condition='prior_type', value='perf')

我得到以下输出(无):

当我将其更改为使用 unit_traces 时,我实际上可以看到数据

sns.tsplot(data=df.sort('time', ascending=True), time='time', unit='entity', condition='prior_type', value='perf', err_style='unit_traces')

我的问题是为什么我看不到 CI?数据在某些地方有点脱节,但我仍然认为它应该能够得出某种置信区间。我在这里遗漏了什么吗?

【问题讨论】:

您的坐标轴相差近四个数量级...缩放是否以某种方式中断,您只需将第一个图重新缩放为 0-400? @AN6U5 我试过了,我实际上是想重新缩放第一个图,我的数据中有一些非常大的异常值,但绝大多数都在第二个图的范围内,所以我希望看看那里的一些置信区间 这看起来像当 y 轴限制设置为 None 时会发生什么,也许尝试设置 ylimpyplot 例如plt.ylim((0, 400)),虽然我不确定为什么一开始就没有设置限制。 顺便说一下,pickle 文档 (docs.python.org/2/library/pickle.html) 建议“永远不要解开从不受信任或未经身份验证的来源收到的数据”。所以在未来,最好只提供几行数据框。 @exp1orer 注意,我这样做主要是为了确保有足够的数据用于绘图,但将来会考虑到这一点,感谢您的注意 【参考方案1】:

如果缺少数据,默认估计器 (numpy.mean) 会生成 NaN,而 matplotlib 只是避免了绘图(通常很有帮助,但在这里可能会造成混淆)。使用 nan-safe 估计器,例如 scipy.stats.nanmean 应该可以工作。抱歉,这在文档中并不明显。

【讨论】:

【参考方案2】:

scipy.stats.nanmean 从 scipy 0.15.0 开始被弃用,取而代之的是 numpy.nanmean。在scipy 0.15.0 documentation 中阅读更多内容。

【讨论】:

以上是关于Seaborn tsplot 未显示 CI 波段的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn使用regplot函数可视化散点图并添加回归曲线移除默认的回归曲线置信区间(Scatter plot with regression lineRemove CI band)

Seaborn使用lmplot函数可视化散点图并添加回归曲线移除默认的回归曲线置信区间(Scatter plot with regression lineRemove CI band)

使用 *args 和 seaborn 绘图时如何显示所有图例

Matplotlib学习---用seaborn画直方图和核密度图(histogram & kdeplot)

如何在seaborn的关节图上不显示皮尔逊系数?

Django 模板 - 列表未正确呈现