Pyplot绘制比特币价格与情感得分折线图日期显示错误求助
问题原因
- 你没有将
tweets_normal的date列转换为日期类型,matplotlib无法识别字符串格式的日期,会默认将其当做数值处理 - 绘制第二个坐标轴的情感得分折线时,你只传入了y轴的
compound数据,没有传入对应的x轴日期数据,matplotlib会默认使用行索引作为x值,索引从0开始对应的时间戳就是1970年的时间起点,因此出现了无效日期
修正步骤
- 在绘图代码前添加日期格式转换逻辑,将字符串日期转为pandas可识别的 datetime 类型
- 绘制第二个坐标轴的折线时,和第一个轴保持一致,同时传入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
相关产品推荐
相关产品推荐

