Как отобразить метки DateTimeIndex x_tick - PullRequest
0 голосов
/ 16 мая 2019

У меня есть серия Pandas с DateTimeIndex, которую я строю в виде линейного графика.Я хотел бы, чтобы мои ярлыки x_ticks и x_tick были только DateTimeIndex серии.

Используя приведенный ниже код, я отображаю нужные мне x_ticks, но к меткам x_tick добавляются и 'Jan 2019', и 'Feb', а также значения 30 и 10 для каждогоконец оси x (значения дня первого и последнего DateTimeIndex).

w_c = pd.date_range(start=pd.to_datetime('2018-12-30'), end=pd.to_datetime('2019-02-10'), freq='w')
sales = [111.94, 193.44, 143.46, 157.26, 124.8, 206.26, 127.22]
test = pd.Series(sales, index=w_c)

fig,ax = plt.subplots(figsize=(8,7))
ax = test.plot(fontsize=10, color='darkorange', lw=0.8, ylim=(0,250))
ax.xaxis.grid(True, which="both")

ax.xaxis.set_ticklabels(test.index.strftime('%d/%m/%Y'), rotation=25, minor=True)

display(fig)

Может кто-нибудь подсказать, как убрать эти дополнительные ярлыки?Я ожидаю, что метки x_tick будут DateTimeIndex только в моей серии испытаний.

См. Снимок экрана здесь с нежелательными метками, обведенными красным

img

1 Ответ

0 голосов
/ 17 мая 2019

Одним из быстрых решений является построение графика

w_c = pd.date_range(start=pd.to_datetime('2018-12-30'), end=pd.to_datetime('2019-02-10'), freq='w')
sales = [111.94, 193.44, 143.46, 157.26, 124.8, 206.26, 127.22]
test = pd.Series(sales, index=w_c)

fig,ax = plt.subplots(figsize=(8,7))

# plot on ranks of rows instead of index
ax.plot(range(len(test)), test, color='darkorange', lw=0.8)
ax.set_ylim(0,250)
ax.xaxis.grid(True, which="both")

# manually modify the label
ax.set_xticklabels([''] + test.index.strftime('%d/%m/%Y').to_list(), rotation=25)

Выход:

enter image description here

...