Я думаю, что параметр hue
- это то, что вы ищете, с некоторыми предварительными манипуляциями с данными.Я бы использовал только 2 столбца для оси x и y и третий столбец для легенды.Так что-то вроде этого должно работать:
# data manipulation
x = df['Year'].values
x = np.hstack((x, x)) # stacking 2 times the same x as no2 and so2 vectors share the same Year vector
y = df['no2'].values
y = np.hstack((y, df['so2'].values)) # stacking so2 and no2 values
z1 = ['no2' for i in range(len(df))]
z2 = ['so2' for i in range(len(df))]
z = np.hstack((z1, z2)) # first part of the dataframe correspond to no2 values, the remaining correspond to so2 values
df2 = pd.DataFrame(data= {'Year': x, 'y' : y, 'legend' : z})
sns.pointplot(x='Year', y='y', hue='legend', data=df2)
РЕДАКТИРОВАТЬ: В Seaborn нет никаких причин, чтобы сделать 2 участка, как вы делаете.Параметр hue - способ сделать это.