我已经成功创建了代码以生成一堆图表。但是,x轴标签与x轴刻度线稍有偏移(向左)。
数据框
stationId date variable value prefix uom
0 site 1 2016-04-07 pH 6.90 NaN pH
1 site 1 2016-07-11 pH 6.80 NaN pH
2 site 1 2017-10-09 pH 6.80 NaN pH
3 site 1 2017-10-09 pH 6.80 NaN pH
4 site 1 2016-06-29 pH 6.79 NaN pH
完整的数据帧here
代码中没有任何内容我可以理解为什么会发生这种情况。
#plot
for line,group in linedf.groupby(['variable']):
x = group['date']
ax1 = group.plot(x='date', figsize=(8.2,4.5),linestyle='--',
linewidth=0.75,rot=0,marker='o',markersize=3)
#set axis labels and chart title
plt.title("chartTitle", fontsize=12)
ax1.set_xlabel('Date', fontsize=10)
ax1.set_ylabel('GWL (mAHD)',fontsize=10)
#set text font
rcParams['font.family'] = 'serif'
rcParams['font.serif'] = ['Cambria']
#set dates for x tick labels
years = mdates.YearLocator() # every year
months = mdates.MonthLocator() # every month
yearsFmt = mdates.DateFormatter('%Y')
lgd = plt.legend(bbox_to_anchor=(0.0 ,-0.13, 1.0, -0.03),
loc=2,ncol = 6, mode="expand", borderaxespad=0.0,shadow=True)
plt.show()
答案 0 :(得分:2)
我没有推测您正在使用的数据框(或至少其中的一部分),但是使用
手动调整刻度标签的对齐方式就足够了for tick in ax1.xaxis.get_major_ticks():
tick.label1.set_horizontalalignment('center')
在没有数据框的情况下,我无法测试以确保这种情况适用于您的情况,但是从问题图中,看来x-tick标签的对齐方式已设置为'right'
,并将它们设置为{ {1}}将使他们按照您的意愿对齐。
摘自matplotlib文档中的centered ticklabels示例。