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
时会发生什么,也许尝试设置 ylim
到 pyplot
例如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 绘图时如何显示所有图例