Python 按绘图(最后一个值)的显示顺序排列图例

Python 按绘图(最后一个值)的显示顺序排列图例,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在向循环中的图形添加绘图,因此当我向图形添加图例时,图例的顺序与添加绘图的顺序相同。相反,我希望直观地对图例进行排序,因为图中显示了这些图。有些图在某些情况下相互重叠和交叉,因此当我说图中显示这些图时,更明确的定义是根据每个图的最后一个y值对图例进行排序 以下是我目前的代码: heights = [3, 4] algos = ["NegaMax w/o PV", "PVS w/o PV", "NegaMax w/ PV", "PVS w

我正在向循环中的图形添加绘图,因此当我向图形添加图例时,图例的顺序与添加绘图的顺序相同。相反,我希望直观地对图例进行排序,因为图中显示了这些图。有些图在某些情况下相互重叠和交叉,因此当我说图中显示这些图时,更明确的定义是根据每个图的最后一个y值对图例进行排序

以下是我目前的代码:

heights = [3, 4]

algos = ["NegaMax w/o PV",
         "PVS w/o PV",
         "NegaMax w/ PV",
         "PVS w/ PV"]

# (H, B, Algo, Approx)
temp = np.swapaxes(results, 2, 3)

for i in range(temp.shape[0]):
    for j in range(temp.shape[2]):
        plt.plot(temp[i][-1][j], label="{} (H = {})".format(algos[j], heights[i]))

plt.title("Num of Evaluations for each Algorithm at each Height with Maximum Branching Factor")
plt.xlabel("\'Aprox\' Value")
plt.ylabel("Number of Evaluations")
plt.xticks(np.arange(7), np.arange(0, 301, 50))
plt.legend()
plt.show()
其中显示了此图:


其思想是从最后一个数据行获取元素的顺序,例如使用numpy.argsort,相应地对句柄和标签进行排序,并将排序后的句柄和标签提供给图例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.,3.4)
phis = np.linspace(0.3,6.2,5)
y = np.array([np.sin(x+phi) for phi in phis]).T

labels = ["sin({:.2f}*x)".format(phi) for phi in phis]

plt.plot(x,y, label="unknown")

order = np.argsort(y[-1,:])[::-1]
h, l = plt.gca().get_legend_handles_labels()
plt.legend(handles=list(np.array(h)[order]),labels=list(np.array(labels)[order]))
plt.show()

@这不是这里显示的代码的一部分。检查获取外部图例的方法。