Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matplotlib颜色栏上设置限制,而不更改实际打印_Matplotlib_Contour_Colorbar - Fatal编程技术网

在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
帮助
键入
稍微浏览一下代码。