2017-08-10 29 views
1

contourfを使用すると、matplotlibは値を同様の領域にグループ化し、それらの領域に色付けすることを選択します。このプロットをさまざまな値の完全なスペクトルを表示するにはどうすればよいですか?下のコードでは、色が連続しているので、丘の上の太陽は、色の急激な変化ではなく、色の増加の勾配です。pyplot contourf:グラフの色を連続的にするにはどうすればいいですか?

import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 
import numpy as np 
delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
Z = 10.0 * (Z2 - Z1) 
CS = plt.contourf(X, Y, Z, vmin = 0., vmax = 3., cmap=plt.cm.coolwarm) 
plt.show() 

enter image description here

答えて

1

"輪郭" contourfプロットとは、個別の輪郭を埋めます。あなたは代わりにplt.imshowを検討するとよいでしょう。

plt.imshow(Z, vmin = 0., vmax = 3., cmap=plt.cm.coolwarm, origin='lower', 
      extent=[X.min(), X.max(), Y.min(), Y.max()]) 
plt.show() 

enter image description here

+0

これで私の問題は、私はcontourfでできるように私は、xとyの値を指定することはできませんということです。 – kilojoules

+0

私は答えを変えました、それは今ラベルの世話をします。 – DyZ

+1

今後の参考として、ピークをより赤くしたい場合は、vmax = 3からZ.max()に変更する必要があります。 – BenT

3

迅速な回避策は、等高線が非常に小さい使用レベルを作ることであろう。 vminとvmaxは使用しないでください。

Z = 10.0 * (Z2 - Z1) 
clev = np.arange(Z.min(),Z.max(),.001) #Adjust the .001 to get finer gradient 
CS = plt.contourf(X, Y, Z, clev, cmap=plt.cm.coolwarm) 
plt.show() 

EDIT あなただけの等高線のレベルの上限と下限との周りの上部より連続プレイをしたい場合。単語の定義により

Z = 10.0 * (Z2 - Z1) 
clev = np.arange(0,Z.max(),.001) #Adjust the .001 to get finer gradient 
CS = plt.contourf(X, Y, Z, clev, cmap=plt.cm.coolwarm,extend='both') 
plt.show() 

enter image description here

関連する問題