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

Python绘图设置:让Y轴独立于Y值,等间距显示离散Alpha值

实现离散Y值等间距的时间序列图

问题描述

我是Python初学者,尝试绘制时间序列数据但效果不理想。我的Y变量Alpha有四个离散取值:0.0001、0.001、0.01、0.1。使用常规方法绘图时,Y轴按数值大小缩放,我希望这四个值在Y轴上彼此间距相等,而非反映真实数值距离,求实现方法。

原代码(注:缺少import pandas as pd,需补充才能运行):

import matplotlib.pyplot as plt
import numpy as np

d1 = {'Year': [1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007], 
'Alpha': [0.0001, 0.1, 0.01, 0.1, 0.0001, 0.001, 0.1, 0.0001, 0.01, 0.001, 0.0001, 0.1]}

df = pd.DataFrame(data=d1)

plt.plot('Year', 'Alpha', data=df, label = "Alpha Value")
plt.show()  

解决方案

以下两种方法都可以实现Y轴离散值等间距显示:

方法1:将Alpha转为有序分类变量

把Alpha列定义为有序分类类型,让matplotlib将其当作离散类别处理,自动实现等间距Y轴。

import matplotlib.pyplot as plt
import pandas as pd

d1 = {'Year': [1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007], 
'Alpha': [0.0001, 0.1, 0.01, 0.1, 0.0001, 0.001, 0.1, 0.0001, 0.01, 0.001, 0.0001, 0.1]}

df = pd.DataFrame(data=d1)

# 按数值顺序定义分类,保证Y轴从低到高排列
alpha_order = [0.0001, 0.001, 0.01, 0.1]
df['Alpha'] = pd.Categorical(df['Alpha'], categories=alpha_order, ordered=True)

plt.plot(df['Year'], df['Alpha'], label="Alpha Value")
plt.ylabel('Alpha')
plt.xlabel('Year')
plt.legend()
plt.show()

方法2:手动映射数值到索引

将Alpha的离散值映射为整数索引,再替换Y轴刻度标签为原数值,完全自定义显示效果。

import matplotlib.pyplot as plt
import pandas as pd

d1 = {'Year': [1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007], 
'Alpha': [0.0001, 0.1, 0.01, 0.1, 0.0001, 0.001, 0.1, 0.0001, 0.01, 0.001, 0.0001, 0.1]}

df = pd.DataFrame(data=d1)

# 获取排序后的离散值,并创建数值到索引的映射
alpha_values = sorted(df['Alpha'].unique())
value_to_idx = {v:i for i, v in enumerate(alpha_values)}

# 转换为索引列用于绘图
df['Alpha_idx'] = df['Alpha'].map(value_to_idx)

plt.plot(df['Year'], df['Alpha_idx'], label="Alpha Value")
# 设置Y轴刻度和对应标签
plt.yticks(ticks=range(len(alpha_values)), labels=alpha_values)
plt.ylabel('Alpha')
plt.xlabel('Year')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:12:43