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

如何为Matplotlib折线图设置不等间距的X轴刻度?

实现Matplotlib折线图X轴不等间距的方法

问题出在你直接用字符串类型的tenor作为X轴数据——Matplotlib会把这类分类变量的每个类别都当成等间距的独立项,所以刻度间距一致。要实现不等间距,得把tenor转换成对应的连续时间数值(比如总月数),基于数值绘图后再替换回原标签。

具体修改步骤如下:

  • 编写转换函数,将tenor文本转为月数:1M=1,3M=3,6M=6,1Y=12,5Y=60,10Y=120
  • 用转换后的月数作为X轴数据绘制折线图
  • 自定义X轴刻度的位置和标签,让刻度位置对应实际月数,标签显示原tenor文本

修改后的完整代码:

import matplotlib.pyplot as plt
import pandas as pd
import io

temp = u"""
tenor,yield
1M,5.381
3M,5.451
6M,5.505
1Y,5.393
5Y,4.255
10Y,4.109
"""

data = pd.read_csv(io.StringIO(temp), sep=",")

# 定义转换函数:将tenor转为月数
def tenor_to_months(tenor):
    unit = tenor[-1]
    value = int(tenor[:-1])
    if unit == 'M':
        return value
    elif unit == 'Y':
        return value * 12

# 添加月数列
data['months'] = data['tenor'].apply(tenor_to_months)

# 基于月数绘制折线图
plt.plot(data['months'], data['yield'])

# 设置X轴刻度:位置为月数,标签为原tenor
plt.xticks(data['months'], data['tenor'])

# 可选:添加轴标签
plt.xlabel('Tenor')
plt.ylabel('Yield')

plt.show()

这样生成的图表X轴刻度间距就会和实际时间跨度对应:1Y到5Y之间的间距会比6M到1Y的间距大很多,符合真实的时间间隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:47:09