Dma*_*man 5 python transparency axes matplotlib
我正在尝试使用Matplotlib中的bar3d()在Python中创建3D条形直方图.
我已经到了可以在传递一些数据后在屏幕上显示我的直方图的点,但我坚持以下内容:
我已经尝试将几个不同的参数传递给'ax'实例,但是尽管并且怀疑我误解了提供它的内容但是没有任何工作可行.我将非常感谢任何帮助.
以下是我正在处理的代码示例:
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()
Run Code Online (Sandbox Code Playgroud)
要使条形半透明,您只需使用alpha参数.alpha = 0表示100%透明,而alpha = 1(默认值)表示0%透明.
试试这个,它会使条形半透明:
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color='b', alpha=0.5)
Run Code Online (Sandbox Code Playgroud)
关于刻度线位置,您可以使用类似的东西(plt.xticks上的第一个列表或plt.yticks包含"值",您要在哪里找到刻度线,第二个列表包含您实际想要调用的内容蜱虫):
#ax.w_xaxis.set_ticklabels(column_names)
#ax.w_yaxis.set_ticklabels(row_names)
ticksx = np.arange(0.5, 5, 1)
plt.xticks(ticksx, column_names)
ticksy = np.arange(0.6, 7, 1)
plt.yticks(ticksy, row_names)
Run Code Online (Sandbox Code Playgroud)
最后,我得到了这个数字:

| 归档时间: |
|
| 查看次数: |
10686 次 |
| 最近记录: |