【问题标题】:Create an artificial legend in seaborn在 seaborn 中创造人工传奇
【发布时间】:2021-04-27 07:11:18
【问题描述】:

我想在我的情节中添加一个人工图例。这是人为的,因为我没有对我的观察进行分组(见下面的代码)。这意味着我无法用 plt.legend() 函数解决这个问题:它需要分组变量。有什么办法可以处理吗? 我的代码:

sns.set(rc={'figure.figsize':(11.7,8.27)})
sns.set_theme(style="white")
ax = sns.boxplot(data = data.values.tolist(),palette=['white', 'black'])
ax.set_xticklabels(labels, fontsize=14)
ax.tick_params(labelsize=14) 

情节看起来像:

我的愿望是添加一个图例(也许它根本不是一个图例,只是一张图),其中将写成类似(对不起大小):

【问题讨论】:

  • 定义hue,设置dodge=False

标签: python statistics seaborn boxplot


【解决方案1】:

您可以从 Seaborn 创作的艺术家中创建传奇,如下所示:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

sns.set_theme(style="white")
ax = sns.boxplot(data = np.random.randn(20,20), palette=['white', 'black'])

handles = ax.artists[:2]
handles[0].set_label("First")
handles[1].set_label("Second")
ax.legend(handles=handles)
plt.show()

【讨论】:

  • 正是我想要的。谢谢!
【解决方案2】:

由于我没有您的数据,我无法复制您的图表。但是,您可以尝试在末尾添加以下行(在将 matplotlib.pyplot 导入为 plt 之后)。

plt.legend(['First','Second'])

【讨论】:

  • 它可以工作,但它显示两个相等的符号(只是黑线),在它们之后,它首先被写入,第二个。我需要第一个黑色符号和第二个白色符号(你可以在第二张图片上看到它们)。
猜你喜欢
  • 2021-01-08
  • 2015-09-21
  • 2020-07-29
  • 2020-09-16
  • 2020-12-01
  • 1970-01-01
  • 2021-03-16
  • 2017-04-05
  • 2016-01-01
相关资源
最近更新 更多