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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjm750617105/article/details/78279329

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

import matplotlib.pyplot as plt
import numpy as np
from 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) #hap
neu = ax.scatter(emo_values[1][:,0],emo_values[1][:,1],emo_values[1][:,2],c='r', s=10) #neu
sad = ax.scatter(emo_values[2][:,0],emo_values[2][:,1],emo_values[2][:,2],c='g', s=10) #sad
ang = 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()

猜你喜欢

转载自blog.csdn.net/zjm750617105/article/details/78279329
今日推荐