Python Matplotlib-向散点图添加图例

Python Matplotlib-向散点图添加图例,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,我正在为每个人读《熊猫》这本书。在第3章中,作者使用以下代码创建散点图: #根据性别创建颜色变量 def记录性别(性别): 如果性别=‘女性’: 返回0 其他: 返回1 提示['sex_color']=提示['sex']。应用(重新编码性别) 散点图=plt.图(图大小=(20,10)) axes1=散点图。添加子图(1,1,1) axes1.1散点( x=小费[‘账单总额’], y=tips['tip'], #根据团队大小设置点的大小 #我们将这些值乘以10,使点变大 #并强调差异 s=tip

我正在为每个人读《熊猫》这本书。在第3章中,作者使用以下代码创建散点图:

#根据性别创建颜色变量
def记录性别(性别):
如果性别=‘女性’:
返回0
其他:
返回1
提示['sex_color']=提示['sex']。应用(重新编码性别)
散点图=plt.图(图大小=(20,10))
axes1=散点图。添加子图(1,1,1)
axes1.1散点(
x=小费[‘账单总额’],
y=tips['tip'],
#根据团队大小设置点的大小
#我们将这些值乘以10,使点变大
#并强调差异
s=tips['size']*90,
#为性爱设定颜色
c=贴士['sex_color'],
#设置alpha值,使点更透明
#这有助于消除重叠点
α=0.5
)
axes1.set_title('账单总额与小费总额,按性别着色,按大小大小')
axes1.集合标签(“总账单”)
axes1.set_ylabel('Tip'))
plt.show()
情节如下所示:


我的问题是如何在散点图中添加图例?

这里有一个解决方案。此代码基于。按性别分组的数据集循环允许按性别生成颜色(以及相应的图例)。然后,使用
legend_elements
表示尺寸,通过
scatter
功能的输出指示尺寸

这是我通过示例中使用的数据集获得的结果:

代码如下:

导入matplotlib.pyplot作为plt
导入seaborn作为sns
#阅读并按性别分组
tips=sns.load_数据集(“tips”)
分组=提示。分组方式(“性别”)
#按组显示
图,ax=plt子批次(1)
对于枚举(分组)中的i(名称、组):
sc=最大散射(
集团[“总账单”],
组[“提示”],
s=组[“大小”]*20,
α=0.5,
标签=名称,
)
#添加图例(一个用于性别,另一个用于大小)
ax.add_艺术家(ax.legend(title='Gender'))
轴图例(*sc.legend_元素(“尺寸”,num=6),loc=“左下”,title=“尺寸”)
ax.设置标题(“带图例的散点”)
plt.show()

这里有一个解决方案。此代码基于。按性别分组的数据集循环允许按性别生成颜色(以及相应的图例)。然后,使用
legend_elements
表示尺寸,通过
scatter
功能的输出指示尺寸

这是我通过示例中使用的数据集获得的结果:

代码如下:

导入matplotlib.pyplot作为plt
导入seaborn作为sns
#阅读并按性别分组
tips=sns.load_数据集(“tips”)
分组=提示。分组方式(“性别”)
#按组显示
图,ax=plt子批次(1)
对于枚举(分组)中的i(名称、组):
sc=最大散射(
集团[“总账单”],
组[“提示”],
s=组[“大小”]*20,
α=0.5,
标签=名称,
)
#添加图例(一个用于性别,另一个用于大小)
ax.add_艺术家(ax.legend(title='Gender'))
轴图例(*sc.legend_元素(“尺寸”,num=6),loc=“左下”,title=“尺寸”)
ax.设置标题(“带图例的散点”)
plt.show()

scatter\u plot.legend()
你能试一试吗这能回答你的问题吗@funie200,我刚刚开始,所有这些都不重要,你能给我举个例子吗?@r-初学者我发现
没有带标签的句柄放在legend
错误中。@Cody尽管你的问题已经得到了回答,但我建议你从基本的matplotlib教程开始。比如。
scatter\u plot.legend()
你能试试这个吗这能回答你的问题吗@funie200,我刚刚开始,所有这些都不重要,你能给我举个例子吗?@r-初学者我发现
没有带标签的句柄放在legend
错误中。@Cody尽管你的问题已经得到了回答,但我建议你从基本的matplotlib教程开始。比如。我刚开始做可视化,你能提供一个纯粹的matplotlb解决方案吗?你的意思是,不按性别分组吗?因为这是一个纯粹的Matplotlib解决方案,因为它直接来自Matplotlib教程;在绘图解决方案中根本不涉及它。我只是从可视化开始,你能提供一个纯matplotlb解决方案吗?你的意思是,不按性别分组吗?因为这是一个纯粹的Matplotlib解决方案,因为它直接来自Matplotlib教程;在绘图解决方案中根本不涉及它。