Skip to main content
 首页 » 编程设计

python之matplotlib 中具有 2 个不同步长的等值线图

2025年05月04日9zhengyun_ustc

这个问题可能有一个非常简单的解决方案,但我就是找不到。我想绘制一个 contourf 图,其中我的数据的一部分以 1 阶的步长变化,另一部分以 100 阶的步长变化。 现在我试着像这样给出轮廓水平:

contour_levels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200, 300, 400] 

然而,这导致了第 11 个级别都具有相同颜色的结果,因为 matplotlib 以某种方式将其标准化为最大值。就我的色图而言,如何使每个级别都同等重要?

非常感谢 HYRY,您的回答解决了我的问题。这是执行前后的图(我稍微调整了水平;数据来自 GOZCARDS 团队/NASA):

请您参考如下方法:

使用colors参数:

import pylab as pl 
import numpy as np 
 
x, y = np.mgrid[-1:1:100j, 0:1:100j] 
 
z = ... # your function 
 
contour_levels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200, 300, 400] 
 
cmap = pl.cm.BuPu 
colors = cmap(np.linspace(0, 1, len(contour_levels))) 
pl.contour(x, y, z, levels=contour_levels, colors=colors)