在matplot lib中格式化3d条形图

问题描述 投票:2回答:2

我正在使用此代码示例

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

data = np.array([
[0,1,0,2,0],
[0,3,0,2,0],
[6,1,1,7,0],
[0,5,0,2,9],
[0,1,0,4,0],
[9,1,3,4,2],
[0,0,2,1,3],
])

column_names = ['a','b','c','d','e']
row_names = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']

fig = plt.figure()
ax = Axes3D(fig)

lx= len(data[0])            # Work out matrix dimensions
ly= len(data[:,0])
xpos = np.arange(0,lx,1)    # Set up a mesh of positions
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)

xpos = xpos.flatten()   # Convert positions to 1D array
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color='b')

#sh()
ax.w_xaxis.set_ticklabels(column_names)
ax.w_yaxis.set_ticklabels(row_names)
ax.set_xlabel('Letter')
ax.set_ylabel('Day')
ax.set_zlabel('Occurrence')

plt.show()

并且我已经成功地适应了我的需要,现在我需要更改每一列的颜色,以使数据更具可读性,如另一个示例http://matplotlib.org/examples/mplot3d/bars3d_demo.html所示,但是由于以完全不同的方式构造图形,因此我无法弄清楚如何将一个应用到另一个]

我正在从mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np data = np.array([[0,1,0,2,0],[0,3,0 ,2,0],[6,1,1,7,0],[0,5,0,2,9],[...

python matplotlib colors 3d axes
2个回答
4
投票

基本上,您只是将颜色数组传递给color=。数组的每个元素都是您的酒吧之一。因此,根据构造数组的方式,可以按columnsrows对条形进行分组。


-1
投票

我如何拟合我的数据矩阵16x11。行是具有表达值的基因,列是细胞类型。我尝试使用此示例,但3D图显示仅剩几个样本剩余名称。请帮忙。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.