VT 值分布图:Python 脚本分析与可视化
使用 Python 脚本分析 VT 值分布
本脚本使用 Python 分析不同时间节点的 VT 值分布,并生成直方图,展示 VT 值的累积概率分布。
脚本代码
import numpy as np
import matplotlib.pyplot as plt
import os
import math
import time
### step1: 按照每一片画出不同目录(时间节点)的vt 值的分布
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: 按照目录获取最小值并plt
plt.figure(figsize=(16,8),dpi=80)
for k in dir:
files=os.listdir(path+k)
# print(files,k)
vt0_min=[] ### list store of 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.yticks(np.arange(-0.05,1.05,0.05)) # set yaxis label precision
plt.yscale('log')
plt.yticks([10**i for i in range(-2,2)], ['1e-2', '1e-1', '1', '1e1']) # 修改y轴标签为指数形式
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)), xytext=(-20, 0), textcoords='offset points') # 修改注释位置
plt.xlabel('vt value last not 0 count')
plt.ylabel('cumulative probability(log)')
plt.legend(loc='lower right', fontsize='small')
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()
代码解释
- 导入必要的库,包括
numpy,matplotlib.pyplot,os,math和time。 - 设置数据路径和相关参数。
- 读取不同目录(时间节点)下的数据文件,并提取 VT 值。
- 对每个目录的 VT 值进行排序,并计算累积概率分布。
- 使用
matplotlib库绘制直方图,展示 VT 值的累积概率分布。 - 设置图形标题、轴标签、图例等信息。
- 使用
plt.savefig()将图形保存到指定路径。
修改后的代码
代码中的 plt.yscale('log') 将 y 轴设置为对数刻度,plt.yticks([10**i for i in range(-2,2)], ['1e-2', '1e-1', '1', '1e1']) 则将 y 轴的刻度标签设置为指数形式,以方便观察和理解。
总结
通过 Python 脚本,我们可以轻松地分析不同时间节点的 VT 值分布,并生成直方图,直观地展示 VT 值的累积概率分布。
原文地址: https://www.cveoy.top/t/topic/oDJz 著作权归作者所有。请勿转载和采集!