Довольно новичок в python и программировании в целом, так что несите меня, пожалуйста. У меня есть набор данных, импортированный из файла .csv, и я пытаюсь построить столбец значений (ось y) по дате (ось x) за 1 год, но проблема в том, что даты слишком плотные, и я хоть убей не могу понять, как их разделить или изменить то, как они определены. Вот код, с которым я работаю:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
from scipy import stats
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt
df = pd.read_csv('Vanuatu Earthquakes 2018-2019.csv')
, а вот код линейного графика:
plt.figure(figsize=(15, 7))
ax = sns.lineplot(x='date', y='mag', data=df).set_title("Earthquake magnitude May 2018-2019")
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
plt.savefig('EQ mag time')
Это в настоящее время дает мне этот линейный график: 1
В настоящее время я хочу сделать это с помощью чего-то вроде маленькой галочки для каждого дня и большей галочки + метки для начала каждой недели. Не обязательно, чтобы это было именно так, но я в основном хочу просто уменьшить плотность. Я просмотрел множество сообщений здесь, но ни один из них, похоже, не работает в моей ситуации, поэтому любая помощь будет принята с благодарностью.
[Обновление]
Даты работают согласно Konqui совет ниже, и мой код теперь выглядит так:
time = pd.date_range(start = '01-05-2018',
end = '01-05-2019',
freq = 'D')
df = pd.DataFrame({'date': list(map(lambda x: str(x), time)),
'mag': np.random.random(len(time))})
plt.figure(figsize=(15, 7))
df['date'] = pd.to_datetime(df['date'], format = '%Y-%m')
ax = sns.lineplot(x='date', y='mag', data=df).set_title("Earthquake magnitude May 2018-2019")
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday = 1))
ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d'))
plt.setp(ax.xaxis.get_majorticklabels(), rotation = 90)
ax.xaxis.set_minor_locator(md.DayLocator(interval = 1))
plt.xlabel('Date')
plt.ylabel('Magnitude (Mw)')
, что дает мне сообщение об ошибке: AttributeError: 'Text' object has no attribute 'xaxis'
. Есть мысли?