2012-02-24 189 views
5

我想在Python中使用bar3d()在Matplotlib中創建一個3D條柱狀圖。Python matplotlib - > 3D條形圖 - >調整刻度標籤的位置,透明條

我得在那裏我可以通過它的一些數據後顯示我在屏幕上的直方圖了點,但是我堅持以下幾點:

  1. 顯示軸標籤正確(目前遺漏了最後的(或最初?)刻度標籤)
  2. 要麼在每個軸(例如'Mon'的刻度)上指向相應的藍色條,要麼在主要刻度線之間放置刻度標籤。
  3. 使條形成半透明。

image of plot uploaded here

我曾嘗試通過幾種不同的參數給「斧頭」的實例,但沒有得到任何東西,儘管工作並懷疑我誤會了向它提供。我將非常感謝任何幫助。

這裏是我工作的代碼示例:

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() 

回答

7

爲了使條半透明的,你只需要使用Alpha參數。 alpha = 0表示100%透明,而alpha = 1(默認)表示0%透明。

試試這個,它會找出使酒吧半透明:

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

關於蜱蟲的位置,你可以使用這樣的事情(在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) 

最終,我得到這個數字: enter image description here

+0

嗨,謝謝你的建議。我嘗試使用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

+0

這很奇怪,我完全沒有問題,並且我剛剛複製了你的代碼並改變了我告訴過你的這一行。 你使用的是哪個版本?我正在使用matplotlib 1.1.0。 – carla 2012-02-27 13:57:07

+0

@Dan測試matplotlib類型的版本:'import matplotlib;打印matplotlib .__ version__' – Hooked 2012-02-27 14:37:44

相關問題