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

plt.step绘图问题:多余线条与起始位置偏移

问题修复:球队排名折线图的两个Bug解决

问题1:莫名出现的紫色贯穿线条

原因:plt.step的参数传递错误。你当前把zip生成的坐标对列表直接传给plt.step,这不符合该函数的参数要求——它需要分别传入独立的x轴数组和y轴数组,而非合并的坐标对。错误的参数格式让matplotlib解析出额外的默认紫色线条。

问题2:线条从x=0起始,与散点错位

原因:plt.step默认使用where='pre'模式,会在第一个x值(1)之前就开始绘制线条,导致起始点落到x=0位置。同时配合前面的参数错误,进一步放大了对齐偏差。


修复后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame([['Team1', 1, 1],
                   ['Team1', 2, 2],
                   ['Team1', 1, 3],
                   ['Team1', 5, 4],
                   ['Team1', 1, 5],
                   ['Team2', 2, 1],
                   ['Team2', 3, 2],
                   ['Team2', 4, 3],
                   ['Team2', 4, 4],
                   ['Team2', 3, 5],
                   ['Team3', 3, 1],
                   ['Team3', 4, 2],
                   ['Team3', 3, 3],
                   ['Team3', 2, 4],
                   ['Team3', 2, 5]
                   ], columns=['Team', 'Position', 'Game_week'])

teams = df['Team'].unique()

fig, ax = plt.subplots()

# 标签与坐标轴设置
plt.xlabel('Game weeks')
plt.ylabel('Positions')
plt.xlim(-0.2, 5.2)
plt.ylim(0.8, 5.2)
plt.gca().invert_yaxis()

# 刻度设置
xi = list(np.unique(df['Game_week']))
yi = list(np.unique(df['Position']))
plt.xticks(xi)
plt.yticks(yi)

# 球队颜色(调整Team3颜色避免和Team2重复)
colors = {'Team1': 'tab:red', 'Team2': 'tab:blue', 'Team3': 'tab:green'}

# 绘制散点
plt.scatter(df['Game_week'], df['Position'], s=45, c=df['Team'].map(colors), zorder=2)

# 绘制球队折线(修复核心部分)
for team, team_data in df.groupby('Team', sort=False):
    # 分别传入x和y数组,设置where='post'让线条从x=1开始对齐散点
    plt.step(team_data['Game_week'], 
             team_data['Position'],
             '-',
             color=colors[team],
             linewidth=8,
             alpha=0.2, 
             zorder=1,
             where='post')

plt.show()
plt.close()

关键修改点

  • 把plt.step的参数从合并的坐标对,改成分别传入team_data['Game_week']和team_data['Position']
  • 添加where='post'参数,让折线在每个Game_week的位置才开始绘制,与散点完全对齐
  • 调整了Team3的颜色为tab:green,方便区分不同球队的线条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:13:20