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

Matplotlib绘图X轴被多条深色线条覆盖问题排查求助

解决Matplotlib绘制SMA图表时X轴被覆盖的问题

我来帮你搞定这个X轴被深色线条覆盖的问题,仔细看了你的代码和数据类型输出,主要有几个核心问题需要修正:

问题根源分析

  • 时间列未转为datetime类型:你的close_time列是object(字符串)类型,plot_date处理字符串时间时无法正确解析,导致X轴刻度异常重叠,出现你看到的深色覆盖线条。
  • 价格列仍为字符串类型:close等价格列都是object类型,虽然计算SMA时自动转成了float,但这会埋下潜在的类型错误隐患,也可能影响绘图时的数据匹配。
  • plot_date的使用方式:plot_date默认会绘制数据点标记,即使指定了fmt="r-",也可能因为时间格式不规范导致额外的渲染问题。

修正后的代码

import datetime
import matplotlib.pyplot as plt
import pandas as pd
from binance.client import Client

BASE = "ETH"
QUOTE = "USDT"
MARKET = BASE + QUOTE

client = Client("vitalik", "buterin")
klines = client.get_historical_klines(MARKET, Client.KLINE_INTERVAL_15MINUTE, "31 Dec, 2017", "13 Jan, 2018")

# 直接用原始数据创建DataFrame,后续统一处理类型
df = pd.DataFrame(klines, columns=["open_time", "open", "high", "low", "close", "volume", "close_time", "quote_asset_volume", "trades", "base_volume", "quote_volume", "ignore"])

# 将毫秒级时间戳转为datetime类型,比手动转字符串更可靠
df['open_time'] = pd.to_datetime(df['open_time'], unit='ms')
df['close_time'] = pd.to_datetime(df['close_time'], unit='ms')

# 把所有价格、成交量相关列转为数值类型
numeric_cols = ["open", "high", "low", "close", "volume", "quote_asset_volume", "base_volume", "quote_volume"]
df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric)

# 计算3期SMA
df['sma_3'] = df["close"].rolling(window=3).mean()

print(df.dtypes)

fig, ax = plt.subplots(figsize=(10, 6))
# 时间列已是标准datetime,直接用plot替代plot_date,避免多余渲染
plt.plot(df["close_time"], df["sma_3"], "r-")
plt.xticks(rotation=90)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title(MARKET)
# 自动优化X轴刻度布局,防止重叠
fig.autofmt_xdate()
plt.show()

关键修正点说明

  • 时间列标准化:用pd.to_datetime直接处理Binance返回的毫秒时间戳,生成Matplotlib能正确识别的datetime对象,从根源解决X轴解析问题。
  • 数值列统一转换:确保所有价格、成交量数据为数值类型,避免计算和绘图时的类型不匹配问题。
  • 替换绘图函数:改用plt.plot替代plot_date,因为datetime类型已被正确识别,无需依赖plot_date的特殊处理,同时避免默认的点标记干扰。
  • 自动调整刻度:fig.autofmt_xdate()让Matplotlib自动优化X轴刻度的显示角度和间距,彻底解决刻度重叠问题。

这样修改后,X轴的覆盖问题应该就能解决,图表也能正常显示SMA曲线了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:36:08