如何将Pandas DataFrame的列名作为X轴绘制多折线图
实现方案
核心问题原因
你之前转置后效果不符合预期,大概率是DataFrame的列名默认是字符串类型,转置后X轴会按照字符串规则排序(比如1.0之后紧跟10.0,而非2.0),导致折线走势异常。
具体实现步骤
- 第一步:将
1.0-39.0对应的列名转换为浮点型,保证X轴按数值顺序排列 - 第二步:转置DataFrame后直接调用内置绘图方法即可
完整代码示例
import pandas as pd import matplotlib.pyplot as plt # --------------- 1. 数据预处理 --------------- # 假设你的原始DataFrame变量名为df # 将列名转换为浮点型,避免X轴顺序错乱 df.columns = df.columns.astype(float) # --------------- 2. 绘制折线图 --------------- # 转置后绘图:转置后原列名变为索引(即X轴),原每行变为1个系列(即每条折线) ax = df.T.plot( kind='line', figsize=(12, 6), # 自定义画布尺寸 xlabel='X轴数值(1.0-39.0)', ylabel='对应数值', title='多折线对比图' ) # 可选:调整X轴刻度避免拥挤,每5个单位显示1个刻度 plt.xticks(range(1, 40, 5)) # 可选:调整图例位置避免遮挡 plt.legend(bbox_to_anchor=(1.01, 1), loc='upper left') plt.tight_layout() plt.show()
验证示例
如果用模拟数据测试,可参考如下代码验证效果:
# 模拟你的DataFrame结构 df = pd.DataFrame( [ [-0.004640, 0.00231, 0.00512, -0.00123, 0.00367], [0.00312, -0.00189, 0.00421, 0.00087, -0.00215] ], columns=['1.0', '2.0', '3.0', '4.0', '5.0'], index=['组1', '组2'] ) # 后续处理同上,即可得到两条对应折线
内容的提问来源于stack exchange,提问作者pyxisblack
相关产品推荐
相关产品推荐

