Matplotlib-如何为图例添加标签

时间:2020-08-25 04:48:29

标签: python pandas matplotlib legend

在这里我试图通过在x轴上绘制Age和在y轴上绘制Fare来将数据与男性因素分开,我想在图例中显示两个标签以区分男性和女性,并用各自的颜色区分。帮我做到这一点。

代码:

import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('https://sololearn.com/uploads/files/titanic.csv')
df['male']=df['Sex']=='male'
sc1= plt.scatter(df['Age'],df['Fare'],c=df['male'])
plt.legend()
plt.show()

3 个答案:

答案 0 :(得分:1)

您可以使用seaborn之上的matplotlib库来执行所需的确切任务。您可以散布'Age''Fare'并通过'Sex'对其进行颜色编码,只需在hue中传递sns.scatterplot参数,如下所示:

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure()

# No need to call plt.legend, seaborn will generate the labels and legend
# automatically.
sns.scatterplot(df['Age'], df['Fare'], hue=df['Sex'])

plt.show()

Seaborn以更少的代码和更多的功能生成了更好的图。

您可以使用seaborn从PyPI安装pip install seaborn

引用:Seaborn docs

答案 1 :(得分:0)

PathCollection.legend_elements方法 可用于指导要创建多少图例条目以及它们如何 应该贴上标签。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('https://sololearn.com/uploads/files/titanic.csv')
df['male'] = df['Sex']=='male'

sc1= plt.scatter(df['Age'], df['Fare'], c=df['male'])

plt.legend(handles=sc1.legend_elements()[0], labels=['male', 'female'])

plt.show()

enter image description here

Legend guideScatter plots with a legend供参考。

答案 2 :(得分:0)

这可以通过将数据分离到两个单独的数据框中来实现,然后可以为这些数据框设置标签。

import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('https://sololearn.com/uploads/files/titanic.csv')
subset1 = df[(df['Sex'] == 'male')]
subset2 = df[(df['Sex'] != 'male')]
plt.scatter(subset1['Age'], subset1['Fare'], label = 'Male')
plt.scatter(subset2['Age'], subset2['Fare'], label = 'Female')
plt.legend()
plt.show()

enter image description here