我想知道如何在Python中创建一个线图,显示给定时期的最大值、最小值和平均值。我对这种语言了解不多,也不知道如何使一个x有3个y值。我想创建这样的线图:
我试着这样做第一列是纪元,第二个改编。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
data = df.groupby(["epoch"],as_index=False).agg({'adaptation':{np.max, np.min, np.mean}})
data.reset_index(inplace=True)
ax = data.plot(x='epoch', y='adaptation', c='white')
plt.fill_between(x='epoch', y1='Low Value', y2='High Value', data=data)
plt.show()
但它不工作。我的数据data.csv:
epoch,adaptation
0,11538314
0,0
0,11983512
0,12897261
0,0
0,0
0,0
0,8931799
0,12849768
0,11138070
0,0
0,12522918
0,0
0,11309842
1,0
1,0
1,9626928
1,11579548
1,10486644
1,11085142
1,8866995
1,12704713
1,0
1,0
1,0
1,11435553
1,0
1,11833946
1,8031767
1,7454479
1,0
1,0
1,13015695
1,10756224
1,0
1,12295841
1,0
1,12224471
2,0
2,7088825
2,12784235
2,12823529
2,10266321
2,0
2,0
2,12671855
2,7107685
3,0
3,9771319
3,13072968
3,8451687
3,9556870
3,0
3,8557863
4,12200947
4,11080982
4,10201426
4,12249544
4,11955293
4,11910369
4,12048186
4,10688168
4,0
4,9276116
依此类推,每个历元具有相同数量的自适应记录
1条答案
按热度按时间nfzehxib1#
可以使用命名聚合为每个时期的
min
、max
和mean
创建列。然后可以使用data.plot
绘制mean
(平均值),并使用plt.fill_between
填充min
和max
值之间的区域。对于您提供的数据,折线图将被完全填充,因为您的
min
值在每个时期都是0,并且您的max
值在每个时期都是相似的。您的数据的图形将如下所示:如果每个历元的
min
和max
值更接近mean
值,并遵循其趋势,这种可视化方法将更有意义,如下面使用自定义数据生成的图像所示: