绘制多个seaborn图时未显示图例

fam*_*gar 2 matplotlib seaborn

我通常不会遇到 matplotlib 图例的问题,但这是我第一次将它与多个 seaborn 图一起使用,以下不起作用。

fig = plt.figure(figsize=(10,6))
a =sns.regplot(x='VarX', y='VarY1', data=data)
b = sns.regplot(x='VarX', y='VarY2', data=data)
c = sns.regplot(x='VarX', y='VarY3', data=data)
fig.legend(handles=[a, b, c],labels=['First','Second','Third'])
fig.show()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Imp*_*est 7

seaborn.regplot返回一个轴。您不能从坐标区创建图例代理句柄。然而,这甚至没有必要。handles从图例中删除,它应该给出所需的情节。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
import pandas as pd
import seaborn as sns

data=pd.DataFrame({"VarX" : np.arange(10), 
                   'VarY1': np.random.rand(10),
                   'VarY2': np.random.rand(10),
                   'VarY3': np.random.rand(10)})

fig = plt.figure(figsize=(10,6))
sns.regplot(x='VarX', y='VarY1', data=data)
sns.regplot(x='VarX', y='VarY2', data=data)
sns.regplot(x='VarX', y='VarY3', data=data)
fig.legend(labels=['First','Second','Third'])
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 是的,`fig.legend()` 只能从 2.1 开始。但是您可以在轴上调用图例,因为所有图都是该轴的一部分,`ax.legend()`。 (2认同)