Python-X轴标签未与刻度线对齐

时间:2019-02-19 05:31:59

标签: python pandas matplotlib

我已经成功创建了代码以生成一堆图表。但是,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()

x-axis not lining up with ticks

1 个答案:

答案 0 :(得分:2)

我没有推测您正在使用的数据框(或至少其中的一部分),但是使用

手动调整刻度标签的对齐方式就足够了
for tick in ax1.xaxis.get_major_ticks():
    tick.label1.set_horizontalalignment('center')

在没有数据框的情况下,我无法测试以确保这种情况适用于您的情况,但是从问题图中,看来x-tick标签的对齐方式已设置为'right',并将它们设置为{ {1}}将使他们按照您的意愿对齐。

摘自matplotlib文档中的centered ticklabels示例。