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

如何在Matplotlib中添加仅靠数组索引关联的次X轴?

Matplotlib实现索引关联的次X轴对齐问题

问题描述

现有数据:

x1 = [1,2,3,4,5,6,7,8,9,10]; x2 = [1,3,10,60,500,10000,70000,500000,1000000,10000000]; y =[1,2,3,4,5,6,7,8,9,10]

需在Matplotlib中绘制以(x1,y)为主图的图表,并添加x2作为次X轴。x1与x2仅通过数组索引关联,无转换函数,无法使用secondary_xaxis方法。

尝试以下代码后,次X轴刻度未与主X轴对齐(表现为次轴刻度随机分布,未和主轴1-10的刻度一一对应):

self.x = [1,2,3,4,5,6,7,8,9,10]
self.y = [1,2,3,4,5,6,7,8,9,10]
x2 = [1,3,10,60,500,10000,70000,500000,1000000,10000000]
ax3 = ax.twiny()
ax.plot(self.x,self.y)
ax3.set_xticks(x2)
plt.show()

正确实现方法

核心思路是让次X轴的刻度位置与主X轴的刻度位置完全一致,仅替换刻度显示的标签内容为x2的对应值,具体代码如下:

import matplotlib.pyplot as plt

x1 = [1,2,3,4,5,6,7,8,9,10]
y = [1,2,3,4,5,6,7,8,9,10]
x2 = [1,3,10,60,500,10000,70000,500000,1000000,10000000]

# 创建画布和主轴
fig, ax = plt.subplots()
# 绘制主图
ax.plot(x1, y)

# 创建次X轴
ax2 = ax.twiny()
# 设置次轴刻度位置为主轴的x1数值(保证位置对齐)
ax2.set_xticks(x1)
# 将次轴刻度标签替换为x2的对应值
ax2.set_xticklabels(x2)

# 可选:添加轴标签,提升可读性
ax.set_xlabel('主X轴(x1)')
ax2.set_xlabel('次X轴(x2)')
ax.set_ylabel('Y轴')

plt.show()

该方法利用set_xticks()指定次轴刻度的位置与主轴一致,再通过set_xticklabels()替换显示内容,完美实现索引关联的次轴对齐需求。


内容的提问来源于stack exchange,提问作者Aidan O'Farrell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:41:07