本文主要讲解如何使用python绘制三维的柱形图,如下图
源代码如下:
进口numpy np 进口matplotlib。pyplot作为plt 从mpl_toolkits。mplot3d进口Axes3D #构造需要显示的值 X=np。不等(0 5步骤=1)# X轴的坐标 Y=np。不等(0 9步骤=1)# Y轴的坐标 #设置每一个(X, Y)坐标所对应的Z轴的值,在这边Z (X, Y)=X + Y Z=np。0(形状=(5、9)) 因为我在范围(5): j的范围(9): Z (i, j)=我+ j xx, yy=np。meshgrid (X, Y) #网格化坐标 X, Y=xx.ravel (), yy.ravel() #矩阵扁平化 底=np.zeros_like (X) #设置柱状图的底端位值 Z=Z.ravel() #扁平化矩阵 宽度=身高=1 #每一个柱子的长和宽 #绘图设置 无花果=plt.figure () ax=fig.gca(投影=? d”) #三维坐标轴 斧子。bar3d (X, Y,底部,宽度,高度,Z,阴影=True) # #坐标轴设置 ax.set_xlabel(“X”) ax.set_ylabel (Y) ax.set_zlabel (Z(值)) plt.show ()
代码解读:
<强> 1,构造需要显示的数据强>
如下图所示,X坐标取值为(0,1,2,3,4),Y坐标取值为(0,1,2,3,4,5,6,7,8),每一个(X, Y)组合的值Z=X + Y,所需要绘制的图就是在X, Y所对应的坐标位置上面根据Z的值来绘制柱形图。
<强> 2,坐标设置强>
将坐标网格化,X=[0, 1, 2, 3, 4), Y=[0, 1, 2, 3, 4, 5, 6, 7, 8)网格化的结果,如下图所示。可以理解为,X参照Y进行了广播(广播),Y参照X进行了广播,分别添加了一个新的维度,并且进行复制。结合xx和yy就得到了所有的X, Y的坐标组合,经过扁平化之后这种对应关系保持不变。代码中的底部是用来设置绘制每一个柱子的Z坐标的,在此全部都设置为0,而宽度和高度设置每一个柱子的长和宽。
<强> 3,bar3d 强>
ax。bar3d (X, Y,底部,宽度,高度,Z,阴影=True):
X, Y:柱子在XY平面的起始坐标
底部:柱子在Z轴上的起始坐标
宽度,高度:柱子的长宽
Z:数字沿Z轴的长度
影:是否显示阴影(设置为真正立体效果会更好)
shde=True
=False阴影
如果需要绘制多个子图,并且里面每一个子图都是3 d的,只需要将上述代码进行些许修改即可,案例如下:
无花果=plt.figure () ax=无花果。add_subplot(1、3、1、投影=? d”) 斧子。bar3d (x, y, z,宽度,高度,高层,阴影=True) ax=无花果。add_subplot(1、3、2、投影=? d”) 斧子。bar3d (x, y, z,宽度,高度,top2,阴影=True) ax=无花果。add_subplot(1, 3, 3,投影=? d”) 斧子。bar3d (x, y, z,宽度,高度,超越,阴影=True) plt.show ()
以上就是如何用Python绘制三维柱形图的详细内容,更多关于Python绘制柱形图的资料请关注其它相关文章!