Matplotlib绘制加密货币价格子图:X轴显示数字而非日期的解决方法
解决Matplotlib子图X轴显示数字而非日期的问题
问题出在你的DataFrame索引大概率不是日期类型,或者绘图时没让Matplotlib正确识别日期。直接按下面的步骤改就行:
1. 先把日期转成正确的类型
先检查每个子DataFrame的日期列,把它转成datetime类型并设为索引:
# 遍历所有子DataFrame处理日期 for df in list_df_month: # 把你的日期列(比如叫Date)转成datetime,列名不对就换成你实际的 df['Date'] = pd.to_datetime(df['Date']) # 设置该列为索引 df.set_index('Date', inplace=True)
2. 修改绘图代码,强制渲染日期轴
把绘图循环改成下面这样,用Matplotlib原生的轴对象来绘图,确保日期被识别:
import matplotlib.pyplot as plt import pandas as pd plt.figure(figsize=(15, 7)) plt.subplots_adjust(top=1.25, bottom=1.2) for i, month in enumerate(list_df_month, 1): ax = plt.subplot(2, 2, i) # 直接指定x为日期索引,y为Close价格 ax.plot(month.index, month['Close']) ax.set_ylabel('Close') ax.set_xlabel(None) ax.set_title(f"Price for {coin_name[i - 1]}") # 把日期标签转45度,避免挤在一起 plt.xticks(rotation=45) plt.tight_layout() plt.show()
额外提醒
- 如果你的索引已经是日期类型但还是显示数字,那就是Pandas的plot方法没自动触发日期格式化,改用Matplotlib的
ax.plot就能解决。 - 旋转日期标签这步很实用,不然日期多了会重叠看不清。
内容的提问来源于stack exchange,提问作者tommythewhite
相关产品推荐
相关产品推荐

