使用 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()

代码解释

  1. 导入必要的库,包括 numpy, matplotlib.pyplot, os, mathtime
  2. 设置数据路径和相关参数。
  3. 读取不同目录(时间节点)下的数据文件,并提取 VT 值。
  4. 对每个目录的 VT 值进行排序,并计算累积概率分布。
  5. 使用 matplotlib 库绘制直方图,展示 VT 值的累积概率分布。
  6. 设置图形标题、轴标签、图例等信息。
  7. 使用 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 值的累积概率分布。

VT 值分布图:Python 脚本分析与可视化

原文地址: https://www.cveoy.top/t/topic/oDJz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录