2012-02-24 16 views
5

Matplotlibでbar3d()を使用してPythonで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 = 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

こんにちは、あなたの提案に感謝します。 I、アルファ引数を使用しようとしたが、次のエラー受信: 'ファイル "matrix_to_3D_histogram.py" を、ライン43、 ax.bar3d(XPOS、YPOS、ZPOS、DX、DY、DZ、色= B 'で'、alpha = 0.5) TypeError:bar3d()は予期せぬキーワード引数' alpha 'を持っています – Dman

+0

これは奇妙なことですが、何の問題もなく、コードをコピーして、 お使いのバージョンは?私はmatplotlib 1.1.0を使用しています。 – carla

+0

@Dan matplotlibのバージョンをテストするには、次のようにします: 'import matplotlib; print matplotlib .__ version__' – Hooked

関連する問題