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

Matplotlib修改X轴为收盘价后图表显示异常求助

问题原因与解决方法

原因分析

把X轴设置为收盘价后图表异常,核心问题在于:收盘价是数值型数据,直接作为X轴时,matplotlib会将每个数据点的X坐标映射为收盘价的数值,导致数据点按收盘价大小排序,而非原本的序列(或时间)顺序,最终线条错乱。

解决步骤

  1. 统一数据索引
    确保所有指标(curta、longa、Close)都属于同一个DataFrame(即src),保证它们的索引完全一致,这样每个数据点的X(收盘价)和Y(均线值)才能一一对应。

  2. 正确指定X-Y对应关系
    修改绘图代码,明确将收盘价作为X轴,对应均线作为Y轴,而非只传入Y序列:

# 替换原绘图代码
plot.plot(src["Close"], src["media"], label="Media", color="gray")
plot.plot(src["Close"], src["curta"], label="Curta", color="green", linewidth=1)
plot.plot(src["Close"], src["longa"], label="Longa", color="red", linewidth=1)

(原代码里plot.plot(0,...)是画y=0的水平线,若不需要可删除;若保留,改为plot.axhline(y=0, label="Media", color="gray")更规范)

  1. 优先使用时间索引做X轴
    如果你的数据是时间序列,建议用时间索引作为X轴,这样图表会按时间顺序展示,更符合金融数据的分析逻辑:
# 用时间索引做X轴
plot.plot(src.index, src["curta"], label="Curta", color="green", linewidth=1)
plot.plot(src.index, src["longa"], label="Longa", color="red", linewidth=1)

原问题相关信息

未设置X轴时,图表显示正常:
未设置X轴的正常图表

设置X轴为收盘价后,图表显示异常:
设置X轴后的异常图表

相关代码:

src["media"] = media
src["longa"] = longa
src["curta"] =  curta
src["Close"] = close
 
plot.plot(0,label="Media",color="gray")
plot.plot(curta,label="Curta",color="green",linewidth=1)
plot.plot(longa,label="Longa", color="red", linewidth=1)
 
trendColor = (np.where(src['curta'] > (src['longa']),'lime', 'orange'))
src["trendColor"] = trendColor
print(curta)

plot.show()
plot.legend()

内容的提问来源于stack exchange,提问作者BEKA-0101

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:45:22