Python 如何从散点图图例中删除属性

Python 如何从散点图图例中删除属性,python,matplotlib,seaborn,scatter-plot,Python,Matplotlib,Seaborn,Scatter Plot,我使用三列[“类别”、“安装”和“总收入”]中的seaborn绘制了一个散点plot,并使用数据集中的“类别”列绘制了色调图。然而,在图例中,除了我想显示的分类列之外,在末尾有一个很大的自鸣得意,显示散点图中使用的一列,安装。我想删除此元素,但在搜索其他问题时,我不知道如何继续 下面是我正在使用的代码片段: fig, ax = pyplot.subplots(figsize=(12,6)) ax=sns.scatterplot( x="Installs", y="Gross Income",

我使用三列
[“类别”、“安装”和“总收入”]
中的
seaborn
绘制了一个散点
plot
,并使用数据集中的“类别”列绘制了色调图。然而,在图例中,除了我想显示的分类列之外,在末尾有一个很大的自鸣得意,显示散点图中使用的一列,安装。我想删除此元素,但在搜索其他问题时,我不知道如何继续

下面是我正在使用的代码片段:

fig, ax = pyplot.subplots(figsize=(12,6))

ax=sns.scatterplot( x="Installs", y="Gross Income", data=comp_income_inst, hue='Category', 
                   palette=sns.color_palette("cubehelix",len(comp_income_inst)), 
                   size='Installs', sizes=(100,5000), legend='brief', ax=ax) 

ax.set(xscale="log", yscale="log")
ax.set(ylabel="Average Income") 
ax.set_title("Distribution showing the Earnings of Apps in Various Categories\n", fontsize=18)
plt.rcParams["axes.labelsize"] = 15



# Move the legend to an empty part of the plot
plt.legend(loc='upper left', bbox_to_anchor=(-0.2, -0.06),fancybox=True, shadow=True, ncol=5)
#plt.legend(loc='upper left')

plt.show()

实际上,这不是污点,而是色调贴图的大小图例。由于气泡大小
(1005000)
相对于数据而言非常大,因此它们在图例中的该空间重叠,从而产生“污迹”效果。默认图例将颜色和大小图例组合在一起

但是,读者可能需要知道气泡的大小范围,而不是按照您的意愿删除大小标记。因此,考虑将一个传说分成两个传说,并使用边界和道具大小来拟合气泡和标签。

数据(种子,随机数据)

图形

fig, ax = plt.subplots(figsize=(13,6))

ax = sns.scatterplot(x="Installs", y="Gross Income", data=comp_income_inst, hue='Category', 
                    palette=sns.color_palette("cubehelix",len(comp_income_inst)), 
                    size='Installs', sizes=(100, 5000), legend='brief', ax=ax) 

ax.set(xscale="log", yscale="log")
ax.set(ylabel="Average Income") 
ax.set_title("Distribution showing the Earnings of Apps in Various Categories\n", fontsize=20)
plt.rcParams["axes.labelsize"] = 15

# EXTRACT CURRENT HANDLES AND LABELS
h,l = ax.get_legend_handles_labels()

# COLOR LEGEND (FIRST 30 ITEMS)
col_lgd = plt.legend(h[:30], l[:30], loc='upper left', 
                     bbox_to_anchor=(-0.05, -0.50), fancybox=True, shadow=True, ncol=5)

# SIZE LEGEND (LAST 5 ITEMS)
size_lgd = plt.legend(h[-5:], l[-5:], loc='lower center', borderpad=1.6, prop={'size': 20},
                      bbox_to_anchor=(0.5,-0.45), fancybox=True, shadow=True, ncol=5)

# ADD FORMER (OVERWRITTEN BY LATTER)
plt.gca().add_artist(col_lgd)

plt.show()
输出

甚至在绘制之前,考虑Seabn的主题:代码> SNS.SET())/>代码:


可能会复制一个磨坊@Parfait!!!这看起来比我打算做的要好得多。您完全正确,维护安装图例很有帮助,它为图形提供了透视图。再次感谢。然而,当我运行您的代码时,它只显示安装图例,而忽略了类别图例。在我的系统上,它仍然显示三个点,不像输出中更优雅的单色点。我能做些什么呢?奇怪的是,我先声明
size\u lgd
,然后声明
col\u lgd
plt.gca()。尽管知道如何将我的输出从使用3个彩色圆圈更改为像您这样的圆圈仍然很有帮助。还是要谢谢你的帮助。我真的很感激。嗯……我想知道我们是否有版本问题。我刚刚升级了matplotlib和seaborn:
pip安装——升级了modulename
,并复制了此解决方案。此外,这可能是一个数据问题。你能用我发布的数据示例重现图例和颜色问题吗?如果是这样的话,试着发布一些你的实际数据。我认为它必须在我的系统上做更多的默认设置。我能够跟踪需要调整的设置,并且能够重现输出的外观。在
size\u lgd
col\u lgd
中,我添加了
markerscale=0.3,scatterpoints=1
,并将出现的散射点的数量从三个改为一个。再次感谢你帮了大忙。
fig, ax = plt.subplots(figsize=(13,6))

ax = sns.scatterplot(x="Installs", y="Gross Income", data=comp_income_inst, hue='Category', 
                    palette=sns.color_palette("cubehelix",len(comp_income_inst)), 
                    size='Installs', sizes=(100, 5000), legend='brief', ax=ax) 

ax.set(xscale="log", yscale="log")
ax.set(ylabel="Average Income") 
ax.set_title("Distribution showing the Earnings of Apps in Various Categories\n", fontsize=20)
plt.rcParams["axes.labelsize"] = 15

# EXTRACT CURRENT HANDLES AND LABELS
h,l = ax.get_legend_handles_labels()

# COLOR LEGEND (FIRST 30 ITEMS)
col_lgd = plt.legend(h[:30], l[:30], loc='upper left', 
                     bbox_to_anchor=(-0.05, -0.50), fancybox=True, shadow=True, ncol=5)

# SIZE LEGEND (LAST 5 ITEMS)
size_lgd = plt.legend(h[-5:], l[-5:], loc='lower center', borderpad=1.6, prop={'size': 20},
                      bbox_to_anchor=(0.5,-0.45), fancybox=True, shadow=True, ncol=5)

# ADD FORMER (OVERWRITTEN BY LATTER)
plt.gca().add_artist(col_lgd)

plt.show()