在matplotlib颜色栏上设置限制,而不更改实际打印
我想创建一个伪彩色图(例如在matplotlib颜色栏上设置限制,而不更改实际打印,matplotlib,contour,colorbar,Matplotlib,Contour,Colorbar,我想创建一个伪彩色图(例如轮廓或轮廓)和一个色条。出于实际原因,我希望颜色栏的范围不同于底层的可映射性 在下面的示例中,数据Z的范围从0到10000,映射到颜色映射。颜色栏的范围相同 import numpy from matplotlib import pyplot X = numpy.arange(100) Y = numpy.arange(100) Z = numpy.arange(100**2).reshape((100,100)) f = pyplot.figure() ax =
轮廓
或轮廓
)和一个色条。出于实际原因,我希望颜色栏的范围不同于底层的可映射性
在下面的示例中,数据Z的范围从0到10000,映射到颜色映射。颜色栏的范围相同
import numpy
from matplotlib import pyplot
X = numpy.arange(100)
Y = numpy.arange(100)
Z = numpy.arange(100**2).reshape((100,100))
f = pyplot.figure()
ax = f.gca()
cf = ax.contourf(X,Y,Z,100)
cbar = f.colorbar(cf, ticks=[3000,4000,5000,6000])
pyplot.show()
现在,我想“放大”颜色条,即生成一个范围仅为3000到6000的颜色条。这个新的色条仍应作为图例,并为每个记号提供适当的颜色(3000=蓝色,6000=黄色)。无论是
cbar.set_-clim()
还是cf.set_-clim()
都不能实现这一点。一般来说,抑制颜色栏的部分是个坏主意,但这里有一个非常简单的方法
import numpy
from matplotlib import pyplot
X = numpy.arange(100)
Y = numpy.arange(100)
Z = numpy.arange(100**2).reshape((100,100))
f = pyplot.figure()
ax = f.gca()
cf = ax.contourf(X,Y,Z,100)
cbar = f.colorbar(cf, ticks=[3000,4000,5000,6000])
cbar.ax.set_ylim([cbar.norm(3000), cbar.norm(6000)])
cbar.outline.set_ydata([cbar.norm(3000)] * 2 + [cbar.norm(6000)] * 4 + [cbar.norm(3000)] * 3)
cbar.ax.set_aspect(60) # <- tweak this to get the aspect ratio you want
pyplot.show()
导入numpy
从matplotlib导入pyplot
X=numpy.arange(100)
Y=numpy.arange(100)
Z=numpy.arange(100**2).重塑((100100))
f=pyplot.figure()
ax=f.gca()
cf=最大轮廓f(X,Y,Z,100)
cbar=f.colorbar(cf,ticks=[300040006000])
cbar.ax.set_ylim([cbar.norm(3000),cbar.norm(6000)])
cbar.outline.set_ydata([cbar.norm(3000)]*2+[cbar.norm(6000)]*4+[cbar.norm(3000)]*3)
cbar.ax.set_aspect(60)#感谢您的回答。你能解释一下cbar.outline.set_ydata()的作用吗?@Jan请参见编辑。在交互式会话中运行此代码,并使用\uuuu dict\uuuu
、帮助
和键入
稍微浏览一下代码。