如何在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。但是我的传说中有重复的信息。


我宁愿把传说分开。这样我就有了与时间t对应的不同色线。一条法线作为我的解析解决方案,它为模拟结果提供了一个点。


像这样


-(红线)t = 25


-(蓝线)t = 50


-(绿线)t = 500


o Simulaton


-分析解决方案


现在有人可以使用matplotlib实现此目标吗?


绝地无双
浏览 687回答 1
1回答

开心每一天1111

您可以如下选择艺术家和标签以显示在图例中。您需要为图例中未实际绘制的元素创建自定义艺术家。import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0,10,31)fig = plt.figure()ax = fig.add_subplot(1,1,1)#Plot analytic solutionax.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 simulationax.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 displayhandles, labels = ax.get_legend_handles_labels()display = (0,1,2)#Create custom artistssimArtist = 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 listsax.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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python