У меня есть следующий код, который графически отображает случаи, подтвержденные COVID-19, в сопоставлении с некоторыми датами.
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df = pd.DataFrame({'Countries': ['Australia', 'India', 'UAE', 'UK'],
'3/1/20': [ 27, 3, 21, 36],
'3/2/20': [ 30, 5, 21, 40],
'3/3/20': [ 39, 5, 27, 51],
'3/4/20': [ 52, 28, 27, 86],
},
index = [0, 1, 2, 3])
print('Datframe:\n')
print(df)
dft=df.T
print('\n Transposed data:\n')
print(dft)
print(dft.columns)
dft.columns=dft.iloc[0]
dft=dft[1:]
print('\n Final data:\n')
print(dft)
dft.plot.bar(align='center')
# Set date ticks with 2-day interval
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=2))
# Change date format
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
''' Note: If I comment above two lines, I get back x-axis ticks. '''
# Autoformatting dates ticks
plt.gcf().autofmt_xdate()
plt.title('COVID-19 confirmed cases')
plt.show()
Здесь я намеревался показать даты на отметках оси X с 2-дневными интервалами и получить даты, отформатированные в другом стиле. Однако на графике я не вижу никаких отметок и меток на оси X, как показано на рисунке ниже.
Однако, когда я комментирую инструкции с помощью matplotlib.dates
, я получаю обратно отметки и метки.
Можно ли это объяснить и исправить простым способом? Кроме того, можем ли мы получить тот же результат, используя fig, ax = plt.subplots()
?