2014-10-02 47 views
4

當在matlab中繪製矩陣作爲多個水平條(使用barh)時,matlab將第一列作爲底部條,將最後一個作爲頂部。 然而,傳說是相反的,所以第一個項目是傳說中的第一個項目。 我認爲這看起來很混亂。見附圖Matlab barh條和圖例不在同一個方向

data = [0.8000 0.1000 0.6000 0.4500 
    0.3000 0.5000 0.7000 0.3500 
    0.4000 0.4500 0.2000 0.5000]; 
    barh(data); 
    legend('Column 1', 'Column 2', 'Column 3', 'Column 4'); 

我該如何扭轉圖例順序?

(扭轉了傳說命令的項目的順序只是改變了傳說中的字符串,而不是顏色,所以令仍然倒掛,而標籤是錯誤的。)

+0

哪個版本的Matlab? – kkuilla 2014-10-02 15:53:20

+0

這是一個很好的問題。八度表現出相同的行爲,我還沒有找到重新排列圖例條目的方法。文件交換提交'reorderLegend'(http://www.mathworks.co.uk/matlabcentral/fileexchange/37265-reorderlegend)聽起來很有希望,但它似乎不適用於條形圖。儘管如此,這可能是一個很好的起點。 – am304 2014-10-02 15:53:36

回答

0

你可以這樣做:

data = [0.8000 0.1000 0.6000 0.4500 
     0.3000 0.5000 0.7000 0.3500 
     0.4000 0.4500 0.2000 0.5000]; 
h = barh(data); 
legend(fliplr(h),'Column 4', 'Column 3', 'Column 2', 'Column 1'); 

以這種方式,您可以更改句柄的順序。圖例條目將手動重新排序。

+0

文字在圖例中顛倒過來,但不是顏色,所以最終會出錯。 – am304 2014-10-02 15:59:44

+0

@ am304:多數民衆贊成在有趣的,因爲在這裏它工作得很好。如果這些句柄是一個列向量,翻轉就不會做任何事情,但像'flud(h(:))'應該解決這個問題。 – MeMyselfAndI 2014-10-02 16:02:26

+1

是的,手柄位於列向量中,但是使用'flip(h(:))'而不是'fliplr(h)',只需使用頂部的「列1」恢復爲原始圖例。 – am304 2014-10-02 16:08:05

相關問題