2014-02-25 54 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