直接上效果圖:
上代碼:
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