【发布时间】: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()实现它。很难用你给出的例子来尝试。你能发布一些你的原始数据吗?