直接上效果图:
上代码:
import re import seaborn as sns import matplotlib.pyplot as plt import matplotlib.cm as cm import shutil import os import math sns.set_style('whitegrid') path=r"F:\pycharm\class\20211008\alexnet_7class_srcData.csv"#数据的路径 #读取csv文件 csvfile = open(path, 'r') plots = csv.reader(csvfile) r1=[] r2=[] r3=[] #将每一列数据表示一组,将数据分组存放 #row是按行读取,每一行有三个数据,分别存放 for row in plots: r1.append(round(float(row[0]),3)) r2.append(round(float(row[1]),3)) r3.append(round(float(row[2]),3)) #求均值 avg=[] for i in range(len(r1)): avg.append(round((r1[i]+r2[i]+r3[i])/3,3)) #求方差 var=[] for i in range(len(r1)): var.append(((r1[i]-avg[i])**2+(r2[i]-avg[i])**2+(r3[i]-avg[i])**2)/3) #求标准差 std=[] for i in range(len(r1)): std.append(math.sqrt(var[i]))
#通过该公式算出平均值+-标准差的曲线,便于后面范围曲线的描绘 r1 = list(map(lambda x: x[0]-x[1], zip(avg, std))) r2 = list(map(lambda x: x[0]+x[1], zip(avg, std))) plt.rcParams["figure.figsize"] = (15,10) plt.plot(r1) plt.plot(r2) plt.legend(['范围曲线'],fontsize=30) plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.xlabel('Epoch Number',fontsize=20) plt.ylabel('Accuracy',fontsize=20) plt.ylim(0, 20) plt.show()
#横坐标由于fill_between函数 x=[] for i in range(300): x.append(i+1) # import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = (15,10) plt.plot(avg) plt.fill_between(x,r1, r2, color=cm.viridis(0.5), alpha=0.2) plt.legend(['avg'],fontsize=30) plt.xticks(fontsize=20) plt.yticks(fontsize=20) plt.xlabel('Epoch Number',fontsize=20) plt.ylabel('Accuracy',fontsize=20) plt.ylim(0, 20) plt.show()
到此这篇关于python绘制浅色范围曲线的文章就介绍到这了,更多相关python浅色范围曲线内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_39898066/article/details/120660843