我用seaborn绘制了两个点图。当我使用plt.legend时,图例的颜色是相同的,并且没有区别。问题是图例中so2和no2的颜色均为蓝色。我认为它只是选择查询第二行的颜色。
ax=plt.subplots(figsize=(15,5))
sns.pointplot(x='Year', y='no2', data=AP_trend)
sns.pointplot(x='Year', y='so2', data=AP_trend, color = 'r')
plt.legend(labels=['no2', 'so2'])
最佳答案
我认为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参数是执行此操作的方法。