我目前用matplotlib以这种方式生成我的传奇:
if t==25:
l1,l2 = ax2.plot(x320,vTemp320,'or',x320,vAnaTemp320,'-r')
elif t==50:
l3,l4 = ax2.plot(x320,vTemp320,'ob',x320,vAnaTemp320,'-b')
else:
l5,l6 = ax2.plot(x320,vTemp320,'og',x320,vAnaTemp320,'-g')
plt.legend((l1,l2,l3,l4,l5,l6), ('t=25 Simulation', 't=25 Analytical','t=50 Simulation', 't=50 Analytical','t=500 Simulation', 't=500 Analytical'),
bbox_to_anchor=(-.25, 1), loc=2, borderaxespad=0.,prop={'size':12})
Run Code Online (Sandbox Code Playgroud)
以某种方式工作看1.但我的传说中有重复的信息.
我宁愿分开传说.这样我就有了与时间t对应的不同颜色的线条.作为我的分析解决方案的正常线条是模拟结果的点.
这样的事情
- (红线)t = 25
- (蓝线)t = 50
- (绿线)t = 500
o Simulaton
- 分析解决方案
现在有人能用matplotlib实现这一目标吗?

我似乎无法找到解决方案。我有一个自定义的图例(使用此处找到的解决方案),我试图将多个条目放在一行上,而不是将每个新条目放在前一个条目下。一个人怎么做?
red_patch = mpatches.Patch(color='red', label='The red data')
blue_patch = mpatches.Patch(color='blue', label='The blue data')
plt.legend(handles=[red_patch, blue_patch])
Run Code Online (Sandbox Code Playgroud)
我想将“(红色标记)红色数据,(蓝色标记)蓝色数据等......”全部放在顶部的一行中。当条目多于情节时,让它开始一个新行也很好。所以就像我猜的普通文本一样。
我有一个有传奇的情节。我想在图例框中添加一个条目。该条目可能类似于拟合参数或其他描述数据的内容。
作为示例,可以使用下面的代码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 101)
y = np.sin(x)
plt.plot(x, y, color='r', label='y = sin(x)')
plt.plot(np.NaN, np.NaN, color='k', label='extra label')
plt.plot(np.NaN, np.NaN, color='b', linestyle=None, label='linestyle = None')
plt.plot(np.NaN, np.NaN, color='orange', marker=None, label='marker = None')
plt.plot(np.NaN, np.NaN, color=None, label='color = None')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
生成下面的图
我想要一个"extra label"只有空格而没有符号的标签。我尝试将linestyle、marker和colorkwargs 更改为None但没有成功。我也尝试过用绘图plt.plot([], [])代替绘图plt.plot(np.NaN, np.NaN)。我想一些 hacky 解决方法是更改color='k'为color='white'. 但我希望有一种更合适的方法来做到这一点。我怎样才能做到这一点?
编辑
我的问题不是重复的。被指责为重复的帖子显示了另一种制作图例标签的方法,但不适用于没有符号的标签。人们可以运行下面的代码来测试,因为我原来的问题也适用。 …