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

如何确定matplotlib中plt.quiver的颜色数值与颜色的对应关系

解决matplotlib quiver数值对应颜色的问题

当你给plt.quiver()的colour参数传入浮点数列表时,matplotlib会默认使用viridis颜色映射(colormap),并将你的数值自动归一化到0-1区间,对应colormap的颜色范围:

  • 归一化后接近0的数值对应viridis的深紫色
  • 接近0.3对应蓝色
  • 接近0.5对应绿色
  • 接近0.8对应浅黄
  • 接近1对应亮黄色

你试数值500显示紫色,大概率是因为你的数值列表里存在比500大得多的数,导致500被归一化到接近0的区间,所以对应紫色。

具体解决方法

  1. 固定数值映射范围
    通过设置vmin和vmax参数,手动指定数值的上下限,避免自动归一化干扰。比如你想让0对应蓝色、500对应绿色、1000对应黄色,可以这么写:
import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.arange(10)
y = np.arange(10)
u = np.zeros(10)
v = np.zeros(10)
colour = np.array([0, 250, 500, 750, 1000]*2)

# 设置vmin和vmax固定数值范围,搭配viridis色图
plt.quiver(x, y, u, v, colour, vmin=0, vmax=1000, cmap='viridis')
# 添加颜色条,直观查看数值与颜色的对应关系
plt.colorbar()
plt.show()
  1. 查看色图的数值对应关系
    如果你想精准知道某个数值对应什么颜色,可以直接调用色图函数查看RGB值:
# 查看viridis色图中0、0.3、0.5、0.8、1对应的RGB颜色
print(plt.cm.viridis([0, 0.3, 0.5, 0.8, 1]))
  1. 更换颜色映射
    如果viridis不符合需求,你可以换成其他色图,比如rainbow、jet或者coolwarm,只需要修改cmap参数即可。

内容的提问来源于stack exchange,提问作者CSProgrammer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:34