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

Pyplot绘制比特币价格与情感得分折线图日期显示错误求助

问题原因

  • 你没有将tweets_normal的date列转换为日期类型,matplotlib无法识别字符串格式的日期,会默认将其当做数值处理
  • 绘制第二个坐标轴的情感得分折线时,你只传入了y轴的compound数据,没有传入对应的x轴日期数据,matplotlib会默认使用行索引作为x值,索引从0开始对应的时间戳就是1970年的时间起点,因此出现了无效日期

修正步骤

  1. 在绘图代码前添加日期格式转换逻辑,将字符串日期转为pandas可识别的 datetime 类型
  2. 绘制第二个坐标轴的折线时,和第一个轴保持一致,同时传入x轴的日期参数和y轴的情感得分参数

修正后完整代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 转换日期列格式
tweets_normal['date'] = pd.to_datetime(tweets_normal['date'])

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('Date')
ax1.set_ylabel('Bitcoin Price (US Dollar)', color=color)

ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
ax1.xaxis.set_major_locator(mdates.DayLocator(interval=15))
ax1.plot(tweets_normal.date,tweets_normal.price, color=color)
fig.autofmt_xdate()
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()  # 实例化共享x轴的第二个坐标轴

color = 'tab:blue'
ax2.set_ylabel('Bitcoin Tweet Sentiment', color=color)
# 传入x轴日期参数,修复x轴匹配问题
ax2.plot(tweets_normal.date, tweets_normal.compound, color=color)
ax2.tick_params(axis='y', labelcolor=color)
plt.xticks(rotation=45)

plt.title('Bitcoin price vs Bitcoin Tweet Sentiment')
fig.tight_layout()  # 避免右侧y轴标签被裁剪
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:06:03