25

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

ここでカラーバーの制限を設定するにはどうすればよいですか?

4

3 に答える 3

35

引数。それは常にあなたが試す最後のことです:

quadmesh.set_clim(vmin=0, vmax=15)

動作します。

于 2013-03-07T21:35:22.650 に答える
4

Matplotlib 1.3.1 - カラーバーがインスタンス化されている場合にのみ、カラーバーの目盛りが描画されるようです。カラーバーの制限 (set_clim) を変更しても、目盛りは再描画されません。

私が見つけた解決策は、元のカラーバーと同じ軸エントリでカラーバーを再インスタンス化することでした。この場合、axes[1] は元のカラーバーです。これを cax= (子軸) kwarg で指定して、カラーバーの新しいインスタンスを追加しました。

           # Reset the Z-axis limits
           print "resetting Z-axis plot limits", self.zmin, self.zmax
           self.cbar = self.fig.colorbar(CS1, cax=self.fig.axes[1]) # added
           self.cbar.set_clim(self.zmin, self.zmax)
           self.cbar.draw_all()
于 2015-01-26T19:08:18.290 に答える