📜  在散景图中创建两行图例(1)

📅  最后修改于: 2023-12-03 15:08:02.632000             🧑  作者: Mango

在散景图中创建两行图例

在数据可视化中,图例是非常重要的组成部分之一。它们可以帮助阐明图表中的数据,使观众更容易理解。在某些情况下,可能需要在同一散射图中使用两个图例,以更好地表达数据。在本文中,将向您介绍如何在散射图中创建两行图例。

准备数据

在本文中,我们将使用Seaborn库和iris数据集。首先,我们需要导入Seaborn库和iris数据集:

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
创建散射图和图例

接下来,我们将创建一个基本的散射图和一个图例。在下面的代码片段中,我们使用Seaborn库的scatterplot()函数创建散射图,并使用legend()函数创建图例:

sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris)
plt.legend(title="Species", loc="lower right")
plt.show()

上述代码将创建一个散射图和一个图例。该图例将显示三种物种(setosa、versicolor和virginica)以及它们对应的颜色。但是,由于物种名称较长,因此它们无法完全随图例一起显示。因此,我们需要创建两个图例,每个图例显示两个物种。

创建两行图例

要创建两行图例,我们可以使用matplotlib库和ax对象。本质上,我们将创建两个图例,每个图例都包含两个实例,并将它们分别放置在不同的行中。在下面的代码片段中,我们使用ax对象来控制图例的位置和大小:

fig, ax = plt.subplots()
sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris, ax=ax)

# 创建第一行图例
legend1 = ax.legend(handles=ax.get_legend_handles_labels()[0][0:2], 
                    labels=iris.species.unique()[0:2],
                    title="Species", loc="lower right")

# 创建第二行图例
legend2 = ax.legend(handles=ax.get_legend_handles_labels()[0][2:4], 
                    labels=iris.species.unique()[2:4],
                    title="Species", loc="upper right")

# 调整图例位置
ax.add_artist(legend1)
plt.subplots_adjust(right=0.85)

plt.show()

上述代码将创建两个图例,每个图例都显示两个species实例。图例1显示setosa和versicolor,图例2显示virginica和versicolor。我们还使用add_artist()函数将图例1添加到坐标轴对象中。我们使用subplots_adjust()函数调整图例的大小和位置。

结论

在本文中,我们看到了如何在散射图中创建两个图例。我们使用了Seaborn库和iris数据集来创建基本的散射图和图例,然后使用matplotlib库和ax对象创建了两个图例。我们希望您现在已经了解了如何在同一散射图中显示两个图例,以作为您的数据可视化工作的一个有用技巧。