Чтобы вывести все на один и тот же участок, всем нужно дать одинаковое ax
. Чтобы отобразить только часть кадра данных, его можно нарезать как в df1[df1['year'] <= 5]
. Может быть установлен другой стиль линии. Обратите внимание, что «<=» и «> =» используются для рисования линий без прерывания.
Записи легенды, начинающиеся с подчеркивания, будут подавлены в легенде (в случае, если вы не хотите, чтобы они были дважды). Но вы также можете указать другой ярлык (например, label='estimated'
).
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
N = 10
df1 = pd.DataFrame({'year': np.arange(1, N + 1), 'rate': np.random.normal(2, 0.2, N)})
df2 = pd.DataFrame({'year': np.arange(1, N + 1), 'rate': np.random.normal(2.5, 0.2, N)})
fig, ax = plt.subplots()
df1[df1['year'] <= 5].plot('year', 'rate', color='C1', ls='-', ax=ax, label='df1')
df1[df1['year'] >= 5].plot('year', 'rate', color='C1', ls=':', ax=ax, label='_')
df2[df2['year'] <= 5].plot('year', 'rate', color='C2', ls='-', ax=ax, label='df2')
df2[df2['year'] >= 5].plot('year', 'rate', color='C2', ls=':', ax=ax, label='_')
plt.show()
![example plot](https://i.stack.imgur.com/Fyj7B.png)