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

如何用Matplotlib在同一子图绘制日期轴与对应整数索引轴

在Matplotlib子图中添加日期与整数索引双X轴

当然可以实现这个需求,通过Matplotlib的twiny()方法就能在同一子图中添加第二个X轴,一个绑定日期,另一个绑定数据的整数索引,同时绘制价格曲线。

以下是修改后的完整代码:

import yfinance as yf
import matplotlib.pyplot as plt
import numpy as np

# 下载苹果股价数据
aapl = yf.download("AAPL", start="2022-01-01", end="2023-04-30")
# 生成整数索引
idx = np.arange(len(aapl))

# 创建主坐标轴(绑定日期X轴)
fig, ax = plt.subplots(figsize=(10,6))
# 绘制调整后收盘价,主X轴自动使用aapl的日期索引
ax.plot(aapl['Adj Close'], label='AAPL Adj Close')

# 设置主坐标轴标签与标题
ax.set_xlabel('Date', fontsize=12)
ax.set_ylabel('Price', fontsize=12)
ax.set_title('AAPL Stock Price (Date + Index X-Axes)', fontsize=14)
ax.legend()

# 创建第二个X轴(绑定整数索引)
ax2 = ax.twiny()
# 让副轴的刻度范围与主轴数据点数量匹配
ax2.set_xlim(ax.get_xlim())
# 设置副轴的刻度位置和标签为整数索引
ax2.set_xticks(idx[::20])  # 每隔20个点显示一个索引,避免标签拥挤
ax2.set_xticklabels(idx[::20])
ax2.set_xlabel('Integer Index', fontsize=12)

# 调整布局,避免标签重叠
plt.tight_layout()
plt.show()

关键步骤说明

  • 使用ax.twiny()创建与主X轴共享Y轴的副X轴,两个轴独立控制X方向的刻度与标签
  • 通过ax2.set_xlim(ax.get_xlim())保证副轴的刻度范围和主轴完全对齐,确保索引和日期一一对应
  • 用idx[::20]间隔显示索引标签,防止过多标签导致重叠,可根据数据量调整间隔值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:20