zl程序教程

您现在的位置是:首页 >  其他

当前栏目

导入 mat 表格文件画条形图和直方图

文件导入 表格 直方图 MAT 条形图
2023-09-27 14:20:15 时间

条形图

在这里插入图片描述

直方图

在这里插入图片描述

完整代码

import scipy.io as scio
from matplotlib import pyplot as plt
 
dataFile1 = 'feature1.mat'
data1 = scio.loadmat(dataFile1)#导入mat文件,输出为字典格式

dataFile2 = 'feature2.mat'
data2 = scio.loadmat(dataFile2)

#print(data['feature'])

feature1=data1['feature']#获取字典名为‘feature’的数据,数据格式是array数组
feature2=data2['feature']
print(feature1.shape)#查看数组大小
print(feature2.shape)
#print(feature2[:,0].shape)
#print(feature[:,0])#第一列

v1=feature1[:,0]#取出数组第一列的数组
v2=feature2[:,0]
#print(v1[0],v1[1],v1[2])

#生成空的数组
x1=[]
y1=[]

x2=[]
y2=[]

#记录第一个mat文件第一列数据的相同数字出现的频次
for num in range(35):
    index=0
    for i in range(1422):
        if v1[i] == num:
            index=index+1
    x1.append(num)
    y1.append(index)
    print("%d数字有%d个"%(num,index))

print("-------------------------------------")

#记录第二个mat文件第一列数据的相同数字出现的频次
for num in range(35):
    index=0
    for i in range(1623):
        if v2[i] == num:
            index=index+1
    x2.append(num)
    y2.append(index)
    print("%d数字有%d个"%(num,index))
        
result=sum(y2)
print("总共个数%d"%result)

#条形图 (bar)
plt.figure(figsize=(10, 8), dpi=100)   
plt.bar(x1, y1, color = 'g', align =  'center',alpha=0.7,label='feature1') #需要x1,y1两个参数
plt.bar(x2, y2, color = 'b', align =  'center',alpha=0.5,label='feature2') 
plt.title('feature1-2') 
plt.ylabel('num') 
plt.xlabel('index') 
plt.legend()

#直方图(hist)
plt.figure(figsize=(10, 8), dpi=100)   
plt.hist(v1,bins=60,color='b',align='mid',alpha=0.7,label='feature1')#需要v1,bins两个参数,bins是条形图个数,包含间隔
plt.hist(v2,bins=60,color='g',align='mid',alpha=0.5,label='feature2')
plt.legend()
plt.title('feature1-2')
plt.ylabel('num') 
plt.xlabel('index') 
plt.show()

提示

如果有两组数据,需要合并到一张图显示,那么就会用到两种颜色
同样的,两种颜色混合显示会出现新的颜色,为了区分开来
plt.bar 画条形图可以调整align参数,选择'center'或者'edge'
plt.hist 画直方图可以调整 align 参数,选择'mid'或者'left'或者'right'

目的是能把两种颜色错开一定的距离,方便观察数据的变化!!!

为了视觉上的感觉,建议还是设置一下 alpha 参数,调整两种颜色的透明度,看起来会舒服很多!

在这里插入图片描述