Matplotlib柱状图问题:twinx双Y轴下X轴日期间隔设为1不生效
matplotlib设置X轴日期间隔为1不生效的解决方案
- 首先确认依赖导入正确,必须从
matplotlib.dates导入相关工具类,不要混用其他库的日期格式化类 - 提前对数据按日期列排序,避免乱序导致坐标轴渲染异常
- 增加X轴标签自动旋转和布局自适应配置,避免标签重叠时matplotlib自动跳过部分日期
- 双Y轴场景下不需要额外配置次坐标轴的X轴,主坐标轴的定位器配置会自动同步
修正后的完整代码如下:
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates from matplotlib.dates import DateFormatter # 先处理日期列并排序 df['Dates'] = pd.to_datetime(df.Dates) df = df.sort_values('Dates').reset_index(drop=True) fig, ax = plt.subplots(figsize=(16, 9)) ax.bar(df['Dates'], df['Score'], color='blue', width=0.8) # 柱状图宽度建议设置为小于1,避免相邻柱子重叠 date_form = DateFormatter("%d/%m/%Y") ax.xaxis.set_major_formatter(date_form) ax.xaxis.set_major_locator(mdates.DayLocator(interval=1)) # 增加X轴标签旋转配置,避免日期标签重叠 plt.setp(ax.get_xticklabels(), rotation=45, ha='right') ax2=ax.twinx() ax2.plot(df['Dates'], df['Price'], color = 'black') # 自适应布局避免标签被截断 plt.tight_layout() plt.show()
原代码运行结果图:
内容的提问来源于stack exchange,提问作者MinatoDBO
相关产品推荐
相关产品推荐

