Я думаю, что вам нужно в вашем случае
fig, ax = plt.subplots(figsize=(40, 15))
w = (10, 11, 12, 1, 2, 3, 4)
for key, group in df.groupby(['GroupName']):
group.mask(df.Month.isin(w)).plot(ax=ax, x='Date', y='Values', label=key, fontsize=30, color='black')
Обратите внимание, что вам не нужно назначать топор на каждой итерации, и figsize должен быть помещен в подзаговоры.
Я дам вам mcve, который представляет собой синусоидальные данные за два года:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
t = pd.date_range('1.1.2000', '31.12.2001')
data = np.sin(np.arange(len(t.day))/10)
В соответствующем кадре данных добавлен дополнительный столбец month
, который будет использоватьсядля маскировки:
df = pd.DataFrame({'value': data, 'month': t.month}, index=t)
( В моем примере зима заканчивается уже после марта ...:) )
w = (10, 11, 12, 1, 2, 3)
Затем вы можете построить все значения, кроме этихгде month
находится в w
по:
df.value.mask(df.month.isin(w)).plot()
plt.show()