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

如何为Matplotlib循环生成的多图设置差异化同色系色调?

解决Matplotlib同色系色调差异不明显的问题

你当前代码里xaxis = np.linspace(0.5,1, 1000)只取了Blues色卡的后半段(偏浅的区域),10条曲线的颜色都集中在相近的浅蓝色调,自然区分度低。要让色调差异显著,核心是调整颜色映射的取值范围,覆盖色卡的更多区间,具体调整方式如下:

核心修改点

  • 直接根据需要生成的曲线数量,在0到1的全范围内均匀取色,覆盖Blues色卡从深到浅的完整区间,这样各曲线的色调差异会非常明显。
  • 不需要额外生成1000个点的xaxis数组,用循环索引直接计算颜色位置即可,更简洁高效。

修改后的代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
plt.close("all")

# 这里可以替换成用户选择的数量,比如5、7、8等
num_plots = 10
# 获取对应数量的Blues色阶
blues = cm.get_cmap('Blues', num_plots)

fig, ax = plt.subplots()

l1 = np.array([1,2,3,4,5,6,7,8,9,10])

for i in range(num_plots):
    l0 = l1 * i
    # 均匀分布在0-1区间取色,覆盖完整色卡
    ax.plot(l1, l0, color=blues(i/num_plots), label=f'plot {i+1}')
    ax.legend()

plt.show()

微调选项

如果觉得全范围的颜色太深(比如第一条曲线接近深蓝色),可以微调取值范围,比如从0.2到1,既避免过深的颜色,又保留足够的色调差异:

ax.plot(l1, l0, color=blues(0.2 + 0.8*(i/num_plots)), label=f'plot {i+1}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:01:44