2016-07-12 3 views
2

私のiPythonノートブックのmatplotlibの3dバープロットにcmapを設定する正しい方法を理解できません。私はいくつかのランダムなZ値を使って、XとY平面に正しくチャートを設定することができます(28×7ラベル)。グラフは解釈が難しいため、x_dataラベル[1,2,3,4,5]のデフォルトの色はすべて同じです。以下のチャートを生成Matplotlib 3Dバープロットの色の定義

%matplotlib inline 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as npfig = plt.figure(figsize=(18,12)) 

ax = fig.add_subplot(111, projection='3d') 

x_data, y_data = np.meshgrid(np.arange(5),np.arange(3)) 
z_data = np.random.rand(3,5).flatten() 

ax.bar3d(x_data.flatten(), 
y_data.flatten(),np.zeros(len(z_data)),1,1,z_data,alpha=0.10) 

::私はラベルx_dataのために手動で色を定義する必要はありません

enter image description here

ここ

はコードです。どのように私はまだ

ax.bar3d

パラメータを維持x_dataのラベルごとに異なる「ランダム」CMAPの色を、設定することができますか?以下は

ax.bar

と異なる色を使用してばらつきがあるが、私は必要なのax.bar3dです。 enter image description here

+0

http://stackoverflow.com/questions/43869751/change-bar-color-in-a-3d- bar-plot-in-matplotlib-based-value)であり、この文脈でも絡み合っているかもしれない。 – ImportanceOfBeingErnest

答えて

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

fig = plt.figure(figsize=(18,12)) 
ax = fig.add_subplot(111, projection='3d') 

x_data, y_data = np.meshgrid(np.arange(5),np.arange(3)) 
z_data = np.random.rand(3,5) 
colors = ['r','g','b'] # colors for every line of y 

# plot colored 3d bars 
for i in xrange(3): # cycle though y 
    # I multiply one color by len of x (it is 5) to set one color for y line 
    ax.bar3d(x_data[i], y_data[i], z_data[i], 1, 1, z_data[i], alpha=0.1, color=colors[i]*5) 
    # or use random colors 
    # ax.bar3d(x_data[i], y_data[i], z_data[i], 1, 1, z_data[i], alpha=0.1, color=[np.random.rand(3,1),]*5) 
plt.show() 

結果:私は、[この質問]に答えを(提供enter image description here

+0

ありがとうございますが、それは 'r'、 'g'、 'b'を指定しているので、良い解決策ではありません。私の実際のデータセットは3から100までのラベルを持ちます。ラベルは独自の色が必要です。私はプロットのサイズがわからないので、ソリューションはそれに応じて自動パレットの選択を考慮する必要があります。 –

+1

上記のようにランダムな色を使用することができます。 – Serenity

関連する問題