2014-02-25 77 views
1

我的图有一个非常大的图例,为了更容易找到每个对应的行,我想按照最后一个数据点上的行的y值对图例进行排序。按照两个标准对数组进行排序

plots[]包含Line2D中的对象的列表,

labels[]是对应的标签,以每Line2D对象,通过labels = [plot._label for plot in plots]

生成的I要排序的每个/两个阵列由plots._y[-1],Y处的值最后一点

奖励积分如果我也可以先按_linestyle(一个字符串)和y值排序。

我不确定如何做到这一点,我不认为这将需要一个循环,但它可能是因为我按2条标准排序,其中之一将是棘手的处理(':''-'是linestyle的值)。有没有可以帮助我的功能?

编辑:它只是发生在我身上,我可以生成标签我排序,使简单的事情有点。不过,我仍然需要按每个对象的linestyle和y [-1]值排序plots

+0

看看这里,它可以帮助http://stackoverflow.com/questions/5212870/sorting-a-python-list-by-two-criteria – Totem

回答

1

我认为这可能工作:

sorted(plots, key = lambda plot :(plot._linestyle, plot._y[-1])) 
+0

符合规格!现在,我不完全确定这是可能的,但是在每个linestyle类别中,我可以按相反的方式排序,而不必翻转linestyle的排序方式吗? – Zak

+1

所以现在,它首先对'''''和''''''进行排序。这就是我要的。现在在'-''和'':''内,项目按第二个标准'y'排序。目前'y'按升序排序,我希望按降序排序。我实际上是自己解决它的,'-plot.y [-1]'工作。 – Zak

相关问题