我对在散点图中绘制图例很感兴趣。我当前的代码如下所示
x=[1,2,3,4]
y=[5,6,7,8]
classes = [2,4,4,2]
plt.scatter(x, y, c=classes, label=classes)
plt.legend()
问题在于,在创建图时,图例显示为数组,而不是显示唯一的标签及其类。
我知道这是之前在one等线程中讨论过的问题,但是,我觉得我的问题更简单,那里的解决方案不适合。另外,在那个例子中,这个人指定了颜色,但是,在我的例子中,我事先知道我需要多少颜色。此外,在this示例中,用户正在创建多个散射,每个散射具有唯一的颜色。再说一次,这不是我想要的。我的目标是使用x, y
数组和标签简单地创建图。这可能吗?
3条答案
按热度按时间bvhaajcl1#
实际上,这两个相关的问题都提供了一种如何达到预期结果的方法。
最简单的方法是创建尽可能多的散点图,只要存在唯一的类,并为每个类提供一种颜色和图例条目。
如果类是字符串标签,解决方案看起来会略有不同,因为您需要从它们的索引中获取颜色,而不是使用类本身。
b5buobof2#
也许手动填充
table
在这里会很有用。另一个想法是,如果类是连续的数字,则使用colorbar
。我将两种方法合二为一。v2g6jxz63#
seaborn
,matplotlib
的高级API,它使用hue
参数按颜色分隔组。sns.scatterplot
-轴级函数。sns.relplot
和kind='scatter'
(默认)-图形级功能。legend='full'
:确保每个组都将在图例中获得一个条目,这在hue
类别为数字时很重要。(base)
环境中。否则使用pip
安装非Anaconda环境。pandas.DataFrame
,然后使用seaborn绘图。