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

如何使用Matplotlib修改图表中特定刻度及刻度标签的颜色?

嘿,刚好之前做过类似的需求,给你整理了两种精准修改的方法,直接上代码和解释,你可以直接套用到自己的日期图表里:

先给你搭个基础的图表框架,用pandas生成模拟的日期数据,这样你可以直接跑起来测试:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 生成模拟数据:日期从2024-05-01到2024-05-15,对应随机数值
dates = pd.date_range(start='2024-05-01', end='2024-05-15')
values = np.random.randint(10, 50, size=len(dates))

# 特殊日期列表,替换成你自己的目标日期就行
special_dates = ['2024-05-03', '2024-05-07', '2024-05-12']

# 创建图表
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(dates, values)

# 设置x轴日期格式,避免标签重叠
ax.xaxis.set_major_formatter(plt.matplotlib.dates.DateFormatter('%Y-%m-%d'))
plt.xticks(rotation=45)
一、修改特定日期对应的刻度(轴上的短线)颜色

思路很简单:拿到x轴的所有刻度对象,遍历每个刻度,把它对应的日期转换成字符串和特殊日期对比,匹配上就改颜色:

# 获取x轴的所有刻度数值(本质是时间戳)
x_ticks = ax.get_xticks()

# 遍历每个刻度
for tick in x_ticks:
    # 将时间戳转成日期字符串,和特殊日期匹配
    tick_date = plt.matplotlib.dates.num2date(tick).strftime('%Y-%m-%d')
    if tick_date in special_dates:
        # 找到对应刻度线的对象,设置颜色为红色
        ax.get_xticklines()[list(x_ticks).index(tick)].set_color('red')
二、修改特定日期对应的刻度标签(文字)颜色

这里给你两种方法,第一种直接匹配标签文本,第二种通过刻度位置对应的日期匹配(更稳妥,避免标签格式不一致的问题):

方法1:直接匹配标签文本

# 获取x轴的所有刻度标签对象
x_labels = ax.get_xticklabels()

for label in x_labels:
    label_text = label.get_text()
    if label_text in special_dates:
        # 设置标签颜色为蓝色
        label.set_color('blue')

方法2:通过刻度位置对应的日期匹配(推荐)

如果你的x轴标签格式不是%Y-%m-%d(比如只显示月日),用这个方法更准确:

for label in x_labels:
    # 获取标签对应的刻度位置(时间戳),转成日期字符串
    tick_pos = label.get_position()[0]
    tick_date = plt.matplotlib.dates.num2date(tick_pos).strftime('%Y-%m-%d')
    if tick_date in special_dates:
        label.set_color('blue')

最后别忘了显示图表:

plt.tight_layout()
plt.show()

如果你用的是pandas的df.plot()接口生成图表,只需要先通过ax = plt.gca()获取当前的轴对象,然后用上面的方法修改就行,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:02