seaborn x 标签日期格式对齐星期几缩写

seaborn x label date format align day of week abbreviation

如何将星期几缩写对齐到同一级别?目前是交替的。

import pandas as pd
import seaborn as sns; sns.set()

df = pd.DataFrame({'dt':['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04'], 'foo':[10, 15, 8, 13]})
df['dt'] = pd.to_datetime(df['dt'])
display(df)

ax = sns.lineplot(x='dt', y='foo', data=df)

import matplotlib.dates as mdates
date_form = DateFormatter("%a %d-%m")
ax.xaxis.set_major_formatter(date_form)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
plt.xticks(rotation=90, horizontalalignment='center', fontsize=28)
''

对齐刻度标签开头的最简单方法是反向旋转:

plt.xticks(rotation=-90, ha='center', fontsize=28)

或者,刻度标签可以与底部垂直对齐,但需要向下移动。确切的距离取决于字体、字体大小和文本长度:

plt.xticks(rotation=90, ha='center', va='bottom', fontsize=28)
plt.tick_params(axis='x', which='major', pad=150)

还有一种选择是选择单色space 字体。请注意,对于普通字体,'W' 比 'i' 占用的 space 多得多。如果需要这样的 monospace 字体,"courier new" 是最好看的选项之一。

plt.xticks(rotation=90, horizontalalignment='center', fontsize=28, family=['courier new', 'monospace'])