gpt4 book ai didi

matplotlib - 在不更改实际绘图的情况下对 matplotlib 颜色条设置限制

转载 作者:行者123 更新时间:2023-12-01 02:25:36 25 4
gpt4 key购买 nike

我想创建一个伪彩色图(例如 contourcontourf )和一个颜色条。出于实际原因,我希望颜色条的范围与底层可映射不同。

在下面的示例中,数据 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()

plot

现在,我想在颜色条上“放大”,即生成一个范围从 3000 到 6000 的颜色条。这个新的颜色条仍将作为图例并为每个刻度提供适当的颜色(3000 = 蓝色,6000 = 黄色)。都没有 cbar.set_clim()也不是 cf.set_clim()做到这一点。

最佳答案

一般来说,抑制颜色条的部分是一个坏主意,但这里有一个 super hacky的方法来做到这一点。

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

我称之为 hacky,因为它涉及到颜色条的一大堆内部结构。 cbar.outlineLine2D对象是颜色条周围的黑框, set_ydata设置角上的 ydata 以匹配您要查看的子区域。用那条线试试看,看看会发生什么。

您可能想查看颜色图的 clip特征。

关于matplotlib - 在不更改实际绘图的情况下对 matplotlib 颜色条设置限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com