У меня возникли серьезные проблемы с изменением того, как и какие метки оси X представлены на моем графике.
У меня есть индекс даты и времени, и я хочу уменьшить количество отображаемых меток и удалить из него год. Должно быть просто, верно ?! Но, по какой-то причине, сюжет исчезает после того, как я установил основной форматер и локатор. Вот рабочий пример:
import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
teste = pd.DataFrame(index=pd.date_range('2019-01-01','2019-12-31',freq='2D'),columns=['A','B','C'])
teste['A']=.4
teste['B']=.5
teste['C']=.1
for col in teste.columns:
variation = np.random.rand(len(teste))
teste[col]+=variation/10.0
teste['total']=teste.sum(axis=1)
for col in teste.columns:
teste[col]/=teste['total']
ax = plt.figure(figsize=(24,10)).add_axes([0,0,1,1])
teste.drop('total',axis=1).plot(kind='bar',stacked='True',ax=ax,width=1,colormap='coolwarm')
ax.tick_params(labelsize=14)
ax.set_xlabel('')
ax.set_title('Teste',fontsize=28)
ax.set_ylabel('Share (%)',fontsize=22)
ax.tick_params(axis='both',labelsize=20)
ax.legend(bbox_to_anchor=(1.05, 1),fontsize=22, loc='upper left', borderaxespad=0.)
Как видите, пометки не читаются. Но когда я пытаюсь отформатировать:
ax = plt.figure(figsize=(24,10)).add_axes([0,0,1,1])
teste.drop('total',axis=1).plot(kind='bar',stacked='True',ax=ax,width=1,colormap='RdBu')
ax.xaxis_date()
ax.xaxis.set_major_locator(mdates.DayLocator(interval=10))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%d/%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%d/%m"))
ax.set_xlim(teste.index[0],teste.index[-1])
ax.margins(0)
ax.tick_params(labelsize=14)
ax.set_xlabel('')
ax.set_title('Teste',fontsize=28)
ax.set_ylabel('Share (%)',fontsize=22)
ax.tick_params(axis='both',labelsize=20)
ax.legend(bbox_to_anchor=(1.05, 1),fontsize=22, loc='upper left', borderaxespad=0.)
Сюжет исчезает. Что я делаю неправильно? Я перепробовал все. plt.MaxNLocator (N = 10) также не работает. Он растягивает первые N точек по всей оси, полностью игнорируя, где это на самом деле должно быть. Любая помощь будет принята с благодарностью.
Заранее спасибо,
Редактировать: @Trenton McKinney:
Удаление ax.set_xlim (teste.index [0], teste.index [-1]) отображает сюжет, но без пробелов.