Matlab 教材:製圖--長條圖

如果 v 是一個 n 維向量或矩陣,則

bar(v)
就畫出高度依序為
v1, v2 ... vn
的長條圖 (bar chart)。橫軸的坐標就是 1, 2, ..., n。 我們仍然可以用 axis( ) 函式來修改呈現圖片的坐標範圍。試試看
v=[1 4 0 2 3 5];
bar(v);
axis( [ 0.2 6.8 0 6 ] )

如果 x 是一個維度和 v 一樣的向量或序列,則

bar(x, v)
畫出和 bar(v) 一樣的長條圖,只是橫軸的標籤改成以
x1, x2 ... xn
來呈現。承上例,試試看
x = 10 * (4:9);
bar(x, v)
axis( [ 30 100 0 6] )

如果 A 是一個 m 乘 n 的矩陣,則 bar(A) 的意義是, 畫出 m*n 個長條圖,但是每一列上的 n 個元素所畫出的 n 個長條圖, 叢集成一個群組,總共有 m 組長條圖。例如

A = 10 * rand(5,3)
bar(A)
如果 x 是一個 m 維向量或序列, 則 bar(x, A) 的意義就是用 x 的元素當作長條圖的橫軸標籤。 這個意義與前述之 bar(x, v) 相同。

如果不喜歡把每一列的資料以叢集的方式呈現,Matlab 還提供另一個可能: 以堆疊方式呈現。也就是說,A 矩陣中的每一列元素,依序堆疊成一個長條圖, 而總共只有 m 個長條圖。呈上例,試試看

bar(A, 'stacked')
當然,bar(x, A, 'stacked') 這樣的指令還是可以用的。

前面所解說的 bar( ) 用法,全部可以改成 barh( )。 barh( ) 也是畫長條圖,只是變成了水平的橫條。那個 h 就是 horizontal 的縮寫。 要留意的是,barh(v) 所畫的長條圖,v1 對應最下面的圖, vn 對應最上面的圖。在邏輯上這是正確的,但是可能並不符合某些人的直覺。

習題

  1. 以下是一個簡化的小考計分表。第一行是學號, 第二行是第一次小考成績,然後依序是第二次、第三次、第四次小考成績。
            [ 17  10   6   5   7 ]
            [ 18  10  10   9  10 ]
            [ 19   8   9   4   9 ]
            [ 20  10   6   5   8 ]
            [ 21   6   6   5   7 ]
    
    請以學號為橫軸,畫出四次小考成績的叢集長條圖。
  2. 以下是一個簡化的小考計分表。第一行是學號, 第二行是第一次小考成績,然後依序是第二次、第三次、第四次小考成績。
            [ 17  10   6   5   7 ]
            [ 18  10  10   9  10 ]
            [ 19   8   9   4   9 ]
            [ 20  10   6   5   8 ]
            [ 21   6   6   5   7 ]
    
    請以小考的次數為橫軸,畫出五個學生成績的叢集長條圖。
單維彰 (2001/10/03) --- 01/10/10 (單) [Prev] [Next] [Up]