通过matplotlib绘制柱状图,python做可视化数据图表
Python Matplotlib实现3D/4D数据的直方图绘制
1.背景最近在查阅多维信息显示时,了解到三维信息可以通过Matplotlib中的三维图像显示部分来实现,但涉及到三维以上的数据显示时,可以使用雷达图进行显示。雷达图可以显示多维信息。如下图所示:
那么三维柱形图最多能显示X、Y、Z的信息。但是在上一篇关于绘制三维散点图的文章中,提到了里面的颜色可以用变量代替,而不仅仅是字符串。因此,从冷到暖的声调变化过程是否可以作为一种新的维度度量?
二。效果演示按照这个思路,我做的实际效果图如下图所示:
自然包含了Xlabel,Ylabel,Amplitude。同时可以根据第四维的数据来控制可变颜色,通过颜色的深浅来显示数据的变化。如果只是三维变量,可以用颜色来表示振幅的值。如果数值较大,色调偏暖,一个漂亮的路人效果会更好。在matplotlib官网,看到了一个很喜欢的效果展示。以后有时间可以研究一下。
三。实施步骤
发布代码,其中一些步骤会被注释。参考代码是Matplotlib官网图库中的一个例子,portal。
基于上述分析,对该代码进行了如下改进:
将scipy.io作为sio导入
从mpl_toolkits.mplot3d导入Axes3D
将matplotlib.pyplot作为plt导入
将numpy作为np导入
def检测图():
data=SiO . loadmat( f:\ detection . mat )#完成数据的导入
M=data[data]#与M数组形成对应关系。
图=plt.figure()
Ax=fig.add _ plot (111,projection= 3d) # add_subplot在此处使用,因为它将与其他图像一起显示。如果只展示一张图,可以用plot。
x=m[0]
y=m[1]
z=m[2]
X=x.flatten(F) #flatten函数从声明中可以看出。
y=y.flatten(F )
#更改柱形图的颜色。这里不导入第四维信息,可以用z表示。
C=[]
对于z中的a:
如果10:
c .追加( b )
elif a 20:
附加( c )
elif a 30:
C.append(m )
elif a 40:
c .追加(“粉色”)
elif a 39:
c .追加( r )
#这里,dx、dy、dz是三个变量,决定了3D柱形图中柱的长、宽、高。
dx=0.6 * np.ones_like(x)
dy=0.2 * np.ones_like(y)
dz=abs(z) * z.flatten()
dz=dz.flatten()/abs(z)
z=np.zeros_like(z)
#设置三个维度的标签
ax.set_xlabel(Xlabel )
ax.set_ylabel(Ylabel )
ax.set_zlabel(振幅)
ax.bar3d(x,y,z,dx,dy,dz,color=C,zsort=average )
plt.show()
检测图()
2017年8月7日
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。