5
我想在Python中使用bar3d()在Matplotlib中创建一个3D条柱状图。Python matplotlib - > 3D条形图 - >调整刻度标签的位置,透明条
我得在那里我可以通过它的一些数据后显示我在屏幕上的直方图了点,但是我坚持以下几点:
- 显示轴标签正确(目前遗漏了最后的(或最初?)刻度标签)
- 要么在每个轴(例如'Mon'的刻度)上指向相应的蓝色条,要么在主要刻度线之间放置刻度标签。
- 使条形成半透明。
我曾尝试通过几种不同的参数给“斧头”的实例,但没有得到任何东西,尽管工作并怀疑我误会了向它提供。我将非常感谢任何帮助。
这里是我工作的代码示例:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#from IPython.Shell import IPShellEmbed
#sh = IPShellEmbed()
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()
嗨,谢谢你的建议。我尝试使用alpha参数,但收到以下错误: 'File“matrix_to_3D_histogram.py”,line 43,in ax.bar3d(xpos,ypos,zpos,dx,dy,dz,color ='b ',alpha = 0.5) TypeError:bar3d()得到了一个意想不到的关键字参数'alpha'' –
Dman
2012-02-27 12:57:55
这很奇怪,我完全没有问题,并且我刚刚复制了你的代码并改变了我告诉过你的这一行。 你使用的是哪个版本?我正在使用matplotlib 1.1.0。 – carla 2012-02-27 13:57:07
@Dan测试matplotlib类型的版本:'import matplotlib;打印matplotlib .__ version__' – Hooked 2012-02-27 14:37:44