VT Value Distribution Visualization with Logarithmic Y-Axis
import numpy as np import matplotlib.pyplot as plt import os import math import time
step1: Plot VT value distribution for each directory (time node)
path='.\readvt\log' #path='.\vt-32Mb-skyworth'
path1='.\readvt\results'
dir=[] abnorm=[] vrd=6.0 files=os.listdir(path) for i in files: if os.path.isdir(path+i): dir.append(i) print(dir) slotn=['1'] files=['1.log','2.log','3.log']
step2: Get minimum values for each directory and plot
plt.figure(figsize=(16,8),dpi=80) for k in dir: files=os.listdir(path+k) # print(files,k) vt0_min=[] ### list to store min vt value of each dir slot_name=[] vt_value_flt_wo0=[] for p in slotn: a='zero pattern vth worsest case:' for i in files: with open(path+k+''+i,'r',encoding='gb18030',errors='ignore') as file: data=file.readlines() for n in data: if a in n: #print(n) vt_value_str=data[data.index(n)][31:-2] #print(vt_value_str) vt_value_flt_wo0.append(vt_value_str) print(vt_value_flt_wo0,len(vt_value_flt_wo0)) vt0_min=[float(i) for i in vt_value_flt_wo0] #slot_name.append(k+''+ str(i)) #min_slot=slot_name[vt0_min.index(min(vt0_min))] print(vt0_min) x=np.sort(vt0_min) y=np.arange(1,len(x)+1)/len(x) plt.yscale('log') # Change y-axis scale to log10 plt.yticks(np.logspace(-2,0,9)) # Set y-axis tick range and values plt.plot(x,y,marker='.',linestyle=':',label='%s %d pcs min vt=%f'%(k,len(vt0_min),min(vt0_min))) plt.annotate(min(vt0_min),(min(vt0_min),1/len(vt0_min)))
plt.annotate('Vrd=%s'%vrd,(vrd+0.05,0.5))
#plt.annotate(vt0_min[int(len(vt0_min)/2)],(vt0_min[int(len(vt0_min)/2)],0.5))#1/int(len(vt0_min)/2)))
#plt.subplots_adjust(left=0.18, wspace=0.25, hspace=0.25,bottom=0.13, top=0.91)
plt.axvline(x=vrd,ls='-',c='red')
plt.margins(x=0.5, y=0.05)
plt.xlabel('vt value last not 0 count')
plt.ylabel('cumulative probability')
plt.legend(loc='lower right',fontsize='small')#'best'
plt.tight_layout()
plt.grid(b=bool)
plt.title('vt distribution')
#plt.show()
t = time.strftime('%Y%m%d-%H%M',time.localtime(time.time())) plt.tight_layout() plt.savefig(path1+'min_vt_value_distribution.png') #plt.savefig(path2+'vtdistr.png') plt.close()
原文地址: https://www.cveoy.top/t/topic/oDJV 著作权归作者所有。请勿转载和采集!