You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib自定义CMAP报TypeError:int()参数不能为list如何解决

问题修复方案

错误根因

你代码触发TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'的直接原因是LinearSegmentedColormap.from_list()方法的N参数传值不符合要求:

  • N参数的作用是定义颜色映射的渐变色阶总数,仅接受单个正整数输入,你传入了列表类型的n_bin = [100, 20],类型不匹配直接触发报错。
  • 额外存在一个隐式报错风险:你自定义了变量colors = [(0, 0.33, 0.73), (1, 0.26, 0.26)],后续调用colors.LogNorm()时会优先读取你定义的列表对象,无法正确调用matplotlib.colors下的LogNorm归一化方法。

修复后代码

# 先确认你已经导入所需依赖
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, ListedColormap, LogNorm

x = filteredData2019['capacity']
y = filteredData2019['distance']
color_list = [(0, 0.33, 0.73), (1, 0.26, 0.26)] # 修改变量名避免和matplotlib.colors冲突
cmap_name = 'my_list'
# N参数改为单个正整数,这里设为256是常用的平滑渐变色阶数,可按需调整
cm = LinearSegmentedColormap.from_list(cmap_name, colors=color_list, N=256)
# 注意你之前的nump应该是numpy的别名,这里统一修正为np,按需替换即可
newcolors = np.vstack((testColor(np.linspace(0, 1, 128)), testColor2(np.linspace(0, 1, 128))))
newcmp = ListedColormap(newcolors, name='OrangeBlue')
# norm直接调用导入的LogNorm,不要用colors.LogNorm避免变量冲突
fig = plt.hist2d(x, y, bins=(130, 130), cmap=cm, norm=LogNorm())
plt.savefig('heatScatterDistance2019.png', dpi=1000)

可选调整说明

  • 如果你需要自定义色阶数量,可以按需修改from_list方法的N参数值,仅需保证传入单个正整数即可。
  • 代码中的testColor、testColor2为你自定义的颜色插值函数,只要两个函数返回合法的RGB/RGBA数组即可正常运行。

内容的提问来源于stack exchange,提问作者Nik.clgn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:27:00