设置matplotlib颜色条范围

mgi*_*son 19 python 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()
Run Code Online (Sandbox Code Playgroud)

如何在此处设置颜色条限制?

mgi*_*son 24

精氨酸.这是你尝试的最后一件事:

quadmesh.set_clim(vmin=0, vmax=15)
Run Code Online (Sandbox Code Playgroud)

作品.

  • 我真的希望更深入地了解这个API实际上是如何工作的.如果有人能向我解释为什么`ax.set_xlim`有效,但是`ax.set_clim`在API的立场上不起作用,我很乐意听到(我相信其他人可以提出比这更好的答案) - 如果可以,请详细解释!) (6认同)
  • 我不确定这是否能回答你的问题,但如果你看看`quadmesh .__ class __.mro()`你会看到quadmesh的类有`ScalarMappable` mixin.如果你查看`matplotlib/cm.py`,你会发现它是处理colormapping的`ScalarMappable` mixin,特别是它提供了`set_clim`方法. (4认同)
  • 每个(ScalarMappable)艺术家控制自己的颜色.colorbar附加到一个ScalarMappable(通过`plt.colorbar(quadmesh)`调用).因此,艺术家的色彩映射控制着色条的色彩映射.它不是Axes范围的色彩映射.因此,`ax`没有属性`set_clim`. (3认同)
  • 还要看看`plt.clim`做什么就是调用`gci`(获取当前的'image')并在结果上调用`set_clim`.有一个`plt.sci()`函数可以让你设置当前图像,这样`plt.clim`就可以了.我怀疑这没有完成,因为你通过`pyplot`接口上的OO接口进行了`pcolor`调用. (3认同)