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

如何在Matplotlib图表Y轴添加最大值、最小值并保留中间刻度?

如何在Matplotlib图表Y轴同时显示df['close']的最大值、最小值及中间刻度?

先获取df['close']的极值

pmax, pmin = df['close'].max(), df['close'].min()
pmax, pmin
# 示例输出:(35.48, 19.37)

两种不理想的实现方式

  • 方式1:Y轴未显示最大值和最小值
    设置Y轴范围后,Matplotlib自动生成的刻度可能不包含极值:

    pmax, pmin = df['close'].max(), df['close'].min()
    fig, ax = plt.subplots()
    ax.plot(df.index, df['close'])
    ax.set_ylim(pmin, pmax)
    

    Y轴未显示最大最小值的图表

  • 方式2:Y轴仅显示极值,无中间刻度
    直接指定仅显示极值刻度会丢失中间的参考刻度:

    pmax, pmin = df['close'].max(), df['close'].min()
    fig, ax = plt.subplots()
    ax.plot(df.index, df['close'])
    ax.set_yticks([pmin, pmax])
    ax.set_ylim(pmin, pmax)
    

    Y轴仅显示最大最小无中间刻度的图表

实现目标效果的方法

核心是保留Matplotlib自动生成的中间刻度,同时手动添加极值刻度,有两种简洁的实现方式:

方法一:合并自动刻度与极值

pmax, pmin = df['close'].max(), df['close'].min()
fig, ax = plt.subplots()
ax.plot(df.index, df['close'])
ax.set_ylim(pmin, pmax)

# 获取当前自动生成的Y轴刻度
current_ticks = ax.get_yticks()
# 合并极值与现有刻度,去重并排序
new_ticks = sorted(list(set(current_ticks) | {pmin, pmax}))
# 更新Y轴刻度
ax.set_yticks(new_ticks)

方法二:直接补充极值到现有刻度

pmax, pmin = df['close'].max(), df['close'].min()
fig, ax = plt.subplots()
ax.plot(df.index, df['close'])
ax.set_ylim(pmin, pmax)

# 将极值添加到现有刻度列表
ax.set_yticks(list(ax.get_yticks()) + [pmin, pmax])
# 重新排序刻度,保证显示顺序正确
ax.set_yticks(sorted(ax.get_yticks()))

执行上述代码后,即可得到同时显示极值与中间刻度的目标图表:
目标图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:25:27