【问题标题】:How to move legend to outside of a seaborn scatterplot? [duplicate]如何将图例移到 seaborn 散点图之外? [复制]
【发布时间】:2019-05-13 00:15:58
【问题描述】:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
sns.set(style="darkgrid")

g = sns.scatterplot(x="Area", y="Rent/Sqft", hue="region", style="availability", data=df)

当我运行它时,我得到下面的情节。

我想将图例移到情节之外。我用谷歌搜索并尝试了以下

g.legend(loc='right', bbox_to_anchor=(1.25, 0.5), ncol=1)
plt.show()

但我没有得到任何输出。此外,我无法理解对象 plt 是如何连接到我的 sns 对象的

我正在使用 Jupyter Notebook、Python 3.6 和 Seaborn 0.9.0。

【问题讨论】:

  • 也许你更愿意使用ax.legend(loc='center left', bbox_to_anchor=(1.02, 0.5), ncol=1),但它对我来说很好用。你能更详细地解释一下“但我没有得到任何输出”吗?是什么意思?

标签: python matplotlib seaborn scatter-plot


【解决方案1】:

请尝试以下方法:

g.legend(loc='center left', bbox_to_anchor=(1.25, 0.5), ncol=1)

如果需要,您可以将第一个数字更改为负数,以便将图例放在左侧。

如果您使用的是 Jupyter IDE,则需要将两行代码放在同一个单元格中并一起运行以获得输出。此外,没有sns 对象这样的东西。 seaborn 中的大多数函数都返回一个 matplotlib Axes 对象,您可以在其中使用与 Axes 对象关联的所有方法,例如您在此处使用的方法(即 .legend())。

【讨论】:

  • 如果不指定loc,则为"best",导致位置不可预测。反过来,这意味着您应该始终loc 用于非自动展示位置。您是否阅读了我在问题下方的评论?
  • 'best' 确实是默认设置,但我认为当您在bbox_to_anchor 中不传递任何内容时,它是不可预测的。
  • 它总是不可预测的,与您是使用默认轴 bbox 还是提供自定义框无关。
  • 有参考吗?我对此很感兴趣。
  • legend documentation 声明 loc="best" 是默认值。 “最好”是什么,取决于轴中的数据,但如果图例在轴之外,它可以变成任何东西;这意味着在这种情况下左下角可能在(1.25, 0.5),但如果你不走运,它的右上角就是那个位置。因此,应该指定loc 以确保它是欲望的角落。我猜this 读起来很有用。
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 2021-11-18
  • 2021-10-13
  • 2019-04-15
  • 2020-11-07
  • 2020-12-04
  • 2022-01-17
  • 2021-07-11
相关资源
最近更新 更多