如何在Seaborn箱线图中添加标题

219

我尝试过sns.boxplot('Day', 'Count', data= gg).title('lalala')sns.boxplot('Day', 'Count', data= gg).suptitle('lalala'),但都不起作用。 我认为这可能是因为我还在使用Matplotlib。

这似乎很容易通过谷歌搜索解决问题,但我却没有找到有效的解决方案。

6个回答

319

Seaborn的箱线图返回一个Matplotlibaxes实例。与pyplot本身不同,它有一个方法plt.title(),对于axes对应的参数是ax.set_title()。因此您需要调用:

sns.boxplot('Day', 'Count', data=gg).set_title('lalala')

一个完整的例子如下:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
sns.boxplot(x=tips["total_bill"]).set_title("LaLaLa")

plt.show()
当然,您也可以使用返回的轴实例使其更易读:
ax = sns.boxplot('Day', 'Count', data=gg)
ax.set_title('lalala')
ax.set_ylabel('lololo')

6
很遗憾 set_title() 和类似的函数没有返回 self,如果有这样做就很好了。 - Laurens Koppenol
Matplotlib的信条是返回方法创建或操作的对象。这是灵活性的问题;matplotlib明确希望给用户这种灵活性。在matplotlib之上的更高级别的API通常决定允许链接,但在这些情况下,当需要一些非标准行为时,您会遇到操纵底层对象的问题。 - ImportanceOfBeingErnest
当结合matplotlib的各种接口时,我绝对同意。 - Laurens Koppenol
3
属性错误:'FacetGrid'对象没有属性'set_title'。 - Dumb ML
@DumbML 你确定你使用的是 boxpot 吗?这种方法并不适用于 seaborn 的所有图形生成方法。特别是,我尝试了 lmplot,但它没有起作用。(同样的错误) - Kelly Brower

64

sns.boxplot()函数返回一个Axes(matplotlib.axes.Axes)对象。请参考文档

您可以使用'set'方法添加标题,如下所示:

sns.boxplot('Day', 'Count', data=gg).set(title='lalala')

你还可以添加其他参数,比如xlabel和ylabel到set方法中:

sns.boxplot('Day', 'Count', data=gg).set(title='lalala', xlabel='its x_label', ylabel='its y_label')

除了在matplotlib.axes.Axes文档中提到的方法外,还有其他一些方法可用于添加标题、图例和标签。


2
这是一个不错的解决方案,因为它也适用于sns.relplot() - James Brusey

41

尝试将以下代码添加到您的代码结尾:

import matplotlib.pyplot as plt

plt.title('add title here')

1
也许这是最好的解决方案,虽然不完全像社交网络那样,但是它很简单,没有麻烦。谢谢。 - data_runner
毫无疑问,这是最佳解决方案。 - M__

16

对于一个单独的箱线图:

import seaborn as sb
sb.boxplot(data=Array).set_title('Title')

若需在同一图中添加更多箱线图:

import seaborn as sb
sb.boxplot(data=ArrayofArray).set_title('Title')

例如,

import seaborn as sb
myarray = [78.195229, 59.104538, 19.884109, 25.941648, 72.234825, 82.313911]
sb.boxplot(data=myarray).set_title('myTitle')

8

.set_title('')可以用来为Seaborn绘图添加标题:

import seaborn as sb
sb.boxplot().set_title('Title')

0

试试这个:

import seaborn as sns
g = sns.catplot(x='Day', y='Count', data=gg)
g.set_title('LaLa')

2
关于“试试这个”的解释是必要的。例如,它的主意/要点是什么?它与以前的答案有何不同?根据帮助中心的说法:“...始终要解释为什么你提出的解决方案是合适的以及它是如何工作的”。请通过编辑(更改)您的答案来回应,而不是在此处进行评论(不要添加“编辑:”、“更新:”或类似内容 - 答案应该看起来像是今天写的)。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接