【问题标题】:Seaborn lineplot with min & max as a shaded areaSeaborn 线图,最小值和最大值为阴影区域
【发布时间】:2019-07-25 01:44:42
【问题描述】:

我试图绘制一个团队在比赛中的得分随时间的变化,与当时团队得分的最大值和最小值进行比较。我有一个working example with min & max as lines

但是,我更喜欢通过阴影区域显示最小值和最大值,有点像 this picture,但没有绘制最小值和最大值的平均值(蓝线)。

可以在 Seaborn 或 matplotlib 方面更胜任的人帮助我吗?

我尝试过没有成功:

  • 完全停止计算最小值和最大值的平均线
  • 隐藏最小值和最大值的平均线(例如,将其大小减小到 0)
  • 根据this answer 调整 Seaborn 的置信区间“ci”

我更喜欢使用 Seaborn,因为它的“外观和感觉”不错,但在这一点上,我会选择任何可行的方法。


图表上显示的数据集

      timestamp group    score
4  1.563890e+09    13    0.000
0  1.563890e+09   min    0.000
0  1.563890e+09   max  100.000
4  1.563890e+09    13    0.000
0  1.563890e+09   min    0.000
0  1.563890e+09   max   99.675
4  1.563890e+09    13    0.000
0  1.563890e+09   min    0.000
0  1.563890e+09   max   99.675
0  1.563890e+09    13   39.101
0  1.563890e+09   min    0.000
0  1.563890e+09   max   74.573
0  1.563890e+09    13   39.101
0  1.563890e+09   min   37.853
0  1.563890e+09   max   74.573`

第一个屏幕截图的代码(记分板是更大的 pandas 数据框)

s = scoreboard[(scoreboard.group == 13) | (scoreboard.group == "max") | (scoreboard.group == "min")]
sns.lineplot(x="timestamp", y="score", hue="group", data=s, marker="o")

第二张截图的代码(记分牌是一个更大的 pandas 数据框)

s = scoreboard[(scoreboard.group == 13)]
s0 = scoreboard[(scoreboard.group == "max") | (scoreboard.group == "min")]

sns.lineplot(x="timestamp", y="score", data=s0, marker="o")
sns.lineplot(x="timestamp", y="score", data=s, marker="o")

【问题讨论】:

  • 您可以通过fill_between()实现它。很难用你给出的例子来尝试。你能发布一些你的原始数据吗?

标签: python seaborn


【解决方案1】:

没有数据,如何为您提供特定的代码行并不明显。 但是考虑到你是怎么想的,它把一个字形覆盖在另一个上面,我建议你看看 Bokeh。这是另一个 Python 可视化库,它提供了完全的功能并与 pandas 数据集保持兼容。

【讨论】:

  • 感谢 Erick,这正是我在您发布答案时所看到的。我确认散景看起来很有前途!
猜你喜欢
  • 2014-10-04
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多