如何在matplotlib中自定义图例

我现在用这种方式用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}) 

不知何故的作品见1 。 但是我的传奇中有重复的信息。

我宁愿分开这个传说。 所以我有不同的颜色线对应的时间吨。 作为我的分析解决scheme的法线是我的模拟结果的一个点。

就是这样

– (红线)t = 25

– (蓝线)t = 50

– (绿线)t = 500

Simulaton

– 分析解决scheme

现在有人可以用matplotlib来实现吗?

当前图像

您可以select艺术家和标签在图例中显示如下。 您需要为图例中未实际绘制的元素创build自定义艺术家。

 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10,31) fig = plt.figure() ax = fig.add_subplot(1,1,1) #Plot analytic solution ax.plot(x,1*x**2, color='r', label="t = 25") ax.plot(x,2*x**2, color='b', label="t = 50") ax.plot(x,3*x**2, color='g', label="t = 500") #Plot simulation ax.plot(x,1*x**2, color='r', linestyle='', marker='o') ax.plot(x,2*x**2, color='b', linestyle='', marker='o') ax.plot(x,3*x**2, color='g', linestyle='', marker='o') #Get artists and labels for legend and chose which ones to display handles, labels = ax.get_legend_handles_labels() display = (0,1,2) #Create custom artists simArtist = plt.Line2D((0,1),(0,0), color='k', marker='o', linestyle='') anyArtist = plt.Line2D((0,1),(0,0), color='k') #Create legend from custom artist/label lists ax.legend([handle for i,handle in enumerate(handles) if i in display]+[simArtist,anyArtist], [label for i,label in enumerate(labels) if i in display]+['Simulation', 'Analytic']) plt.show() 

示例图