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

如何将Matplotlib坐标轴设置为颜色映射(Colormap)而非单一颜色

用Matplotlib实现坐标轴的颜色映射样式

完全可以实现这种坐标轴渐变色彩的效果,核心思路是用带渐变边缘色的矩形补丁覆盖原有的单一颜色坐标轴,具体代码示例如下:

步骤1:导入依赖库

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle

步骤2:创建基础绘图

先绘制常规的图表内容:

fig, ax = plt.subplots(figsize=(8, 6))
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x, y, color='black')

# 设定坐标轴范围
ax.set_xlim(0, 10)
ax.set_ylim(-1.2, 1.2)

步骤3:添加渐变坐标轴

处理底部X轴

# 选择颜色映射,这里用viridis,可替换为其他内置配色(如plasma、coolwarm)
cmap = plt.get_cmap('viridis')
# 获取原坐标轴的线宽,保证渐变矩形宽度匹配
line_width = ax.spines['bottom'].get_linewidth()

# 创建覆盖X轴的渐变矩形
x_min, x_max = ax.get_xlim()
y_min = ax.get_ylim()[0]
x_axis_rect = Rectangle(
    (x_min, y_min - line_width * 2),  # 矩形左下角坐标
    x_max - x_min,  # 矩形宽度
    line_width * 4,  # 矩形高度,适配轴的粗细
    transform=ax.transData,
    zorder=0,  # 让矩形在绘图内容下方
    facecolor='none',
    edgecolor=cmap(np.linspace(0, 1, 100))  # 生成渐变边缘色
)
ax.add_patch(x_axis_rect)
# 隐藏原有的单一颜色X轴
ax.spines['bottom'].set_visible(False)

处理左侧Y轴

y_min, y_max = ax.get_ylim()
x_min = ax.get_xlim()[0]
y_axis_rect = Rectangle(
    (x_min - line_width * 2, y_min),  # 矩形左下角坐标
    line_width * 4,  # 矩形宽度
    y_max - y_min,  # 矩形高度
    transform=ax.transData,
    zorder=0,
    facecolor='none',
    edgecolor=cmap(np.linspace(0, 1, 100))
)
ax.add_patch(y_axis_rect)
# 隐藏原有的单一颜色Y轴
ax.spines['left'].set_visible(False)

步骤4:优化显示效果

确保刻度和标签显示在渐变轴上方:

ax.tick_params(axis='both', zorder=2)
plt.show()

额外说明

  • 若需要自定义渐变配色,可以用LinearSegmentedColormap创建专属色卡
  • 调整矩形的位置参数(如line_width * 2)可以适配不同的轴粗细需求
  • 顶部X轴或右侧Y轴的渐变效果,只需对应修改ax.spines['top']或ax.spines['right']的相关代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:12:55