我尝试绘制下面的线图,但我有困难手动设置图例颜色。目前的图例颜色不匹配的线颜色。任何帮助将是非常有帮助的。谢谢。
import random
import matplotlib.pyplot as plt
random.seed(10)
data=[(i, i+random.randint(1,20), random.choice(list("ABC"))) for i in range(2000,2025)]
plt.figure(figsize=(14,8))
for x, y,z in data:
a=(x,x+y)
b=(y+random.random(),y+random.random())
if z=="A":
a=(x,x)
plt.plot(a,b,"bo",linestyle="-", linewidth=0.4, color="blue")
elif z=="B":
plt.plot(a,b,"bo",linestyle="-", linewidth=0.4, color="green")
else:
plt.plot(a,b,"bo",linestyle="-", linewidth=0.4, color="red")
ax = plt.gca()
plt.legend(['A', 'B',"C"])
3条答案
按热度按时间g52tjvyc1#
一个简单的方法是为每种类型的元素保存句柄。在下面的代码中,
handleA, = plt.plot(..., label='A')
将plt.plot
创建的line元素存储到一个名为handleA
的变量中。句柄将保留其标签,以便在图例中自动使用。(需要逗号,因为plt.plot
总是返回一个元组,即使只创建了一个line元素。)bq3bfh9z2#
要自定义生成图例,您可以使用此链接。Composing Custom Legends
输出将如下所示:Output
huus2vyu3#
您可以在向图中添加数据时创建符号,然后将图例检查为唯一条目,如下所示: