Я хочу создать фацетную сетку с именами переменных в качестве столбцов и отделами в виде строк, а каждая небольшая диаграмма представляет собой диаграмму рассеяния с y = значением и x = датой
Мои данные являются своего рода например: import pandas как pd import numpy как np import seaborn as sns import matplotlib.pyplot as plt из datetime import datetime import matplotlib.dates as mdates импорт случайный
datelist = pd.date_range(start="march 1 2020", end="may 20 2020", freq="w").tolist()
varlist = ["x", "y", "z", "x", "y", "z", "x", "y", "z", "x", "y", "z"]
deptlist = ["a", "a", "b", "a", "a", "b", "a", "a", "b", "a", "a", "b"]
vallist = random.sample(range(10, 30), 12)
df = pd.DataFrame({'date': datelist, 'value': vallist, 'variable': varlist, 'department': deptlist})
Я хочу сделать сетка фасетов с именами переменных в качестве столбцов и отделами в виде строк, а каждая небольшая диаграмма представляет собой диаграмму рассеяния с y = значением и x = датой
Вот что я имею до сих пор. Это почти работает, за исключением того, что я хочу видеть даты внизу, которые не сжимаются вместе, поэтому я хотел бы видеть "3/1 4/1 5/1" вместо полных дат. Но я не могу понять, как его отформатировать.
plt.style.use('seaborn-darkgrid')
xformatter = mdates.DateFormatter("%m-%d")
g = sns.FacetGrid(df2, row="department", col="variable", sharey='row')
g = g.map(plt.plot, "date", "value", marker='o', markersize=0.7)
datelist = pd.date_range(start="march 1 2020", end="june 1 2020", freq="MS").tolist()
g.set(xticks=datelist)
![enter image description here](https://i.stack.imgur.com/VAH5H.png)
Это довольно близко, но обратите внимание на даты вдоль нижней оси x , Они все сжаты вместе. Вот почему я пытался использовать специальный форматер даты, но не смог заставить его работать. На самом деле мне бы хотелось, чтобы каждая дата отображалась как mon-dd, и я могу контролировать, сколько там отметок отмечается галочкой.