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

Matplotlib使用twinx实现双Y轴时Y轴未增量缩放、绘图为直线问题

根因分析

该现象的核心原因是y1、y2变量存储的是字符串类型数据,而非数值型。Matplotlib处理字符串类数据做Y轴输入时,会将每个值视为独立分类标签按顺序排列,不会计算数值间隔生成增量刻度,最终所有点的Y轴间距完全一致,折线就会呈现为直线形态。

解决方法

按如下步骤调整即可:

  • 先将y1、y2转换为数值类型,修正刻度识别逻辑
  • 若需要自定义Y轴刻度的增量步长,可调用matplotlib.ticker模块的定位器实现

修正后代码

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

# 转换数据为数值型,若原始为字符串格式必填
y1 = list(map(float, y1))
y2 = list(map(float, y2))

fig, ax1 = plt.subplots(figsize=(9,9))
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g')
ax2.plot(x, y2, 'b')

ax1.set_xlabel('Time')
ax1.set_ylabel('Call OI', color='g')
ax2.set_ylabel('Put OI', color='b')

# 自定义Y轴增量步长,数值可根据实际数据范围调整
ax1.yaxis.set_major_locator(MultipleLocator(100))
ax2.yaxis.set_major_locator(MultipleLocator(100))

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04