matplotlibカラーバーの範囲を設定したいと思います。これまで私が持っていたことは次のとおりです。matplotlibカラーバーの範囲を設定する
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(20)
y = np.arange(20)
data = x[:-1,None]+y[None,:-1]
fig = plt.gcf()
ax = fig.add_subplot(111)
X,Y = np.meshgrid(x,y)
quadmesh = ax.pcolormesh(X,Y,data)
plt.colorbar(quadmesh)
#RuntimeError: You must first define an image, eg with imshow
#plt.clim(vmin=0,vmax=15)
#AttributeError: 'AxesSubplot' object has no attribute 'clim'
#ax.clim(vmin=0,vmax=15)
#AttributeError: 'AxesSubplot' object has no attribute 'set_clim'
#ax.set_clim(vmin=0,vmax=15)
plt.show()
ここでカラーバーの制限を設定するにはどうすればよいですか?
このAPIの実際の動作をより深く理解したいと思います。誰かが私になぜ 'ax.set_xlim'が動作するのか説明できれば、' ax.set_clim'はAPIの観点からは機能しません。私は聞いて欲しいです(他の人がこれよりはるかに優れた答えを出すことができると確信しています - できるだけ詳しく説明してください!) – mgilson
これがあなたの質問に答えるかどうかは分かりませんが、 'quadmesh .__ class __。mro()'を見ると、quadmeshのクラスに 'ScalarMappable' mixin 。 'matplotlib/cm.py'を見ると、それはカラーマッピングを扱う' ScalarMappable' mixinであり、特に 'set_clim'メソッドを提供しています。 – unutbu
各(ScalarMappable)アーティストが独自の色を制御します。カラーバーは1つのScalarMappable( 'plt.colorbar(quadmesh)'コールによって)に添付されています。したがって、アーティストのカラーマップは、カラーバーのカラーマッピングを制御します。 Axes全体のカラーマップではありません。したがって、 'ax'は' set_clim '属性にはなりません。 – unutbu