使用 matplotlib 在 x 轴上将年作为对数刻度

Years as a logarithmic scale on the x-axis with matplotlib

我想使用对数刻度在 x 轴上绘制日期,如下例所示,但我无法获得正确的间距:

刻度为对数刻度。这里的技巧是将年份视为类别,而不是数字。我在这里使用了字符串来实现这种效果。

df = pd.DataFrame({'year': map(str, range(2010, 2045)), # years as strings
                   'value': 1 # dummy data here
                   })
ax = df.plot(x='year', y='value', marker='.')
ax.set_xscale('log')
ax.set_xticks(range(1,35+1), rotation='vertical')  # categories start from 1
ax.set_xticklabels(df['year'])

输出: