gpt4 book ai didi

python - Matplotlib 散点图与图例

转载 作者:IT老高 更新时间:2023-10-28 20:41:14 28 4
gpt4 key购买 nike

我想创建一个 Matplotlib 散点图,图例显示每个类的颜色。例如,我有一个 xy 值列表,以及一个 classes 值列表。 xyclasses 列表中的每个元素对应于图中的一个点。我希望每个类都有自己的颜色,我已经编码了,但是我希望这些类显示在图例中。我应该将哪些参数传递给 legend() 函数来实现这一点?

到目前为止,这是我的代码:

import matplotlib.pyplot as plt
x = [1, 3, 4, 6, 7, 9]
y = [0, 0, 5, 8, 8, 8]
classes = ['A', 'A', 'B', 'C', 'C', 'C']
colours = ['r', 'r', 'b', 'g', 'g', 'g']
plt.scatter(x, y, c=colours)
plt.show()

最佳答案

首先,我感觉您在声明颜色时应该使用撇号,而不是反引号。

对于图例,您需要一些形状以及类。例如,下面为 class_colours 中的每种颜色创建一个名为 recs 的矩形列表。

import matplotlib.patches as mpatches

classes = ['A','B','C']
class_colours = ['r','b','g']
recs = []
for i in range(0,len(class_colours)):
recs.append(mpatches.Rectangle((0,0),1,1,fc=class_colours[i]))
plt.legend(recs,classes,loc=4)

Output from first code block

还有第二种创建图例的方法,在这种方法中,您可以为一组点指定“标签”,并为每组点使用单独的分散命令。下面给出了一个例子。

classes = ['A','A','B','C','C','C']
colours = ['r','r','b','g','g','g']
for (i,cla) in enumerate(set(classes)):
xc = [p for (j,p) in enumerate(x) if classes[j]==cla]
yc = [p for (j,p) in enumerate(y) if classes[j]==cla]
cols = [c for (j,c) in enumerate(colours) if classes[j]==cla]
plt.scatter(xc,yc,c=cols,label=cla)
plt.legend(loc=4)

enter image description here

第一种方法是我个人使用的方法,第二种方法是我在查看 matplotlib 文档时才发现的。由于图例覆盖了数据点,因此我移动了它们,可以找到图例的位置 here .如果有另一种方法来制作图例,我在文档中快速搜索了几次后无法找到它。

关于python - Matplotlib 散点图与图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558816/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com