python 画三维散图以及在图上加均值点

来源:互联网 发布:合肥晨飞网络 编辑:程序博客网 时间:2024/06/06 06:59

分析VAD情感的数据分布,画出对应的散点图,并在图上标记处每个类别的均值点。

import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D # 必须要加这个,否则下面的projection会报错#new_line = re.sub('[,\[\]\n\%\t-]', ' ', line) 去除指定的多个字符ax=plt.figure().add_subplot(111, projection='3d') #创建一个三维的绘图工程emo_values = [np.asarray(s) for s in emo_values] #4个二维矩阵print(emo_values[1].shape) #(1708, 3) #其中第二个矩阵的大小hap_mean = np.mean(emo_values[0], axis=0)neu_mean = np.mean(emo_values[1], axis=0)sad_mean = np.mean(emo_values[2], axis=0)ang_mean = np.mean(emo_values[3], axis=0)# 4类情感,在颜色上有区分度hap = ax.scatter(emo_values[0][:,0],emo_values[0][:,1],emo_values[0][:,2],c='black', s=10) #hapneu = ax.scatter(emo_values[1][:,0],emo_values[1][:,1],emo_values[1][:,2],c='r', s=10) #neusad = ax.scatter(emo_values[2][:,0],emo_values[2][:,1],emo_values[2][:,2],c='g', s=10) #sadang = ax.scatter(emo_values[3][:,0],emo_values[3][:,1],emo_values[3][:,2],c='b', s=10) #ang# alpha表示透明度, marker 表示标记形状,默认是小圆点,s表示标记的大小ax.scatter(hap_mean[0],hap_mean[1],hap_mean[2],c='black', alpha=0.1, marker='*', s=180)ax.scatter(neu_mean[0],neu_mean[1],neu_mean[2],c='r', alpha=0.8, marker='*', s=180)ax.scatter(sad_mean[0],sad_mean[1],sad_mean[2],c='g', alpha=0.8, marker='*', s=180)ax.scatter(ang_mean[0],ang_mean[1],ang_mean[2],c='b', alpha=0.8, marker='*', s=180)ax.set_zlabel('D') #坐标轴ax.set_ylabel('A')ax.set_xlabel('V')#加图例ax.legend((hap, neu, sad, ang), ('hap', 'neu', 'sad', 'ang'), loc=2)plt.show()
原创粉丝点击