3

在 Matlab 中绘制后,我们caxis(max(caxis()) - [0.5, 0])将颜色限制从当前的最大颜色限制缩放到低于该最大值的 0.5。这是有效的,因为caxis()在 Matlab 中,既可以获取也可以设置颜色限制。如何在 matplotlib 中做到这一点?

也就是说,我想实现以下目标:

import numpy.random, numpy, pylab
arr = numpy.random.randn(100,100)
pylab.figure()
pylab.imshow(arr)
pylab.colorbar()
pylab.clim([numpy.max(arr.ravel())-0.5, numpy.max(arr.ravel())]) # [*]
pylab.show()

没有星号调用pylab.clim()求助于arr,正在绘制的数组。换句话说,如何在 matplotlib 中获取当前图形的“clim”?

4

2 回答 2

9

如果您没有保留返回的图像对象,您可以使用pylab.gci来获取当前的 ScalarMappable(即当前颜色条将基于的任何内容)。

从那里,您只需要get_climScalarMappable 对象的方法。

所以,你可以这样做:

vmin, vmax = plt.gci().get_clim()
于 2012-10-25T02:06:52.777 回答
1

发现一个 2006 年的邮件列表对话向我展示了方式:

im = pylab.imshow(arr)
pylab.clim(im.norm.vmax - numpy.array([0.5, 0]))
于 2012-10-25T01:48:55.600 回答