Как сделать часть сюжета пунктирной - PullRequest
0 голосов
/ 24 января 2019

Предположим, что у нас есть следующий фрейм данных.

d = {'quarter':['2018-1', '2018-2', '2018-3', '2018-4', '2019-1'], 'number':[131, 157, 136, 155, 263]}
df = pd.DataFrame(data=d)

Теперь я хотел бы нарисовать это, что я и сделал, используя

ax = plt.gca()
df.plot(x='quarter', y='number', ax=ax, label='Data')
plt.xticks(df.index, df['quarter'].values)

Теперь дело в том, что я хотел бы, чтобы линия от x = 2018-4 до x = 2019-1 была пунктирной, поскольку это прогноз.

Мой вопрос Как я могу сделать часть сюжета пунктирной?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Единственная возможность сделать это, не углубляясь в художника Line2D (если возможно), - это построить две разные линии:

ax = plt.gca()
df.iloc[:-1].plot(ax=ax, label='Data', color='C0')
df.iloc[-2:].plot(ax=ax, label='Data', color='C0', ls=':')
plt.xticks(df.index, df['quarter'].values)
ax.legend(['Data', 'Prediction'])

Есть несколько вещей, которые я бы рекомендовал изменить дляупрощенная обработка данных:

  • Создание временных меток из данных за квартал
  • Создание отдельного столбца для данных и прогноза, установив для всех недоступных значений в каждом столбце значение np.nan
0 голосов
/ 24 января 2019

Постройте их по отдельности, дважды вызвав заговор; Просто нарежьте ваш массив

plt.plot(x[:2018-4] + x[2019-1:], y[:2018-4] + y[2019-1:])
plt.plot(x[2018-4:2019-1], y[2018-4:2019-1])

Существует также ключевое слово аргумента, чтобы убедиться, что они оба имеют одинаковый цвет; iirc это просто color= синий` например

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...