Python 如何仅为一个绘图函数获取多个图例组件

Python 如何仅为一个绘图函数获取多个图例组件,python,matplotlib,Python,Matplotlib,我很难让一个传奇人物为我现在正在制作的情节工作。我只想要一个基本的图例,分别为黄点和灰点写上“已观察到”和“未观察到”。我不知道为什么我在这个问题上遇到这么多麻烦,我知道这可能是个愚蠢的问题,但我似乎在网上找不到任何答案 由于这段代码现在是这样的,它会为数据中的每一行打印一个带有组件的图例,即使可能只有两个唯一的值: import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as mpatches

我很难让一个传奇人物为我现在正在制作的情节工作。我只想要一个基本的图例,分别为黄点和灰点写上“已观察到”和“未观察到”。我不知道为什么我在这个问题上遇到这么多麻烦,我知道这可能是个愚蠢的问题,但我似乎在网上找不到任何答案

由于这段代码现在是这样的,它会为数据中的每一行打印一个带有组件的图例,即使可能只有两个唯一的值:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches


filename = ("master.kkids.obslist")

data = np.loadtxt(filename,skiprows=14,dtype=str)

x = data[:,7]
y = data[:,8]
u = data[:,18]
v = data[:,19]
z = data[:,20]

r = u.astype(str)
s = v.astype(str)
t = z.astype(str)

colors = ["grey" if s == "N" else "yellow" for s in v]
labelf = ["Observed" if s == "N" else "Not Observed" for s in v]

x1 = x.astype(float)
y1 = y.astype(float)
x2 = x1*24/360

plt.xticks(np.arange(0, 26, 2.0))

plt.scatter(x2,y1,c=colors,label=labelf)
plt.ylabel('Declination' + " (" + u"\N{DEGREE SIGN}"+ ")")
plt.xlabel('Right Ascension (h)')

plt.legend(loc='upper right')

plt.savefig('foo.png')

我们将非常感谢您对这个传奇的任何帮助。提前感谢。

另外,使用子绘图并单独绘制每个图形,标记所需的绘图,然后使用“显示”一次显示所有绘图,将为您提供更多的控制。看一下plt.legend的文档。我也计算了很多,但我不确定如何将数据分割成两个不同的图。我有我的x和y数据,然后是第三列,确定点的颜色。我明白了。也许将所有需要标记的数据以一种方式组合到一个数组中,将其余的数据以另一种方式组合到另一个数组中,对两个新数组进行适当的绘图和标记是最简单的。对不起,我在手机上,或者我写了密码。此外,在每个新绘图中,您可以只指定颜色。再次为缺乏清晰性感到抱歉。很酷,我真的想出来了。我没有在上面的函数中定义颜色,而是在第3列中为y/N的x/y数组设置了一个标准。这样我就可以绘制x1[yes]和x1[no],并从那里分别设置它们的颜色。很抱歉没有行话,我在这方面完全是自学成才的。