Matlab繪圖(1)透過屬性檢查器調整繪圖

發表於2024-03-22

Matlab圖形屬性檢查器

和其他語言的繪圖不一樣的是,Matlab允許我們透過非程式設計的方式來自定義調整繪圖。下面介紹Matlab圖形的構成以及幾種調整繪圖時的常用操作。

圖形構成

什麼是Figure

當我們使用繪圖函式建立圖形時,總會彈出一個視窗以顯示我們繪製的圖形,這整個視窗我們把它叫做Figure或者稱為畫板(即我們作畫需要的載體)。比如像下面的圖形就是一個Figure:

儘管在我們進行繪圖時,系統為我們給定了一套預設的引數,比如圖形的大小,顏色,位置等等,但是這種方式由於缺乏靈活性,不利於我們對圖形進行修正比如,若將上面的圖形匯出則會出現大片的空白區域,後期仍需要進行二次裁剪十分浪費時間,因此我們需要深入瞭解Figure,以實現我們客製化的需求。

Figure由哪些部分組成

我將Matlab中Figure的最常用組成總結如下:

其中Figure是整個畫布,legend是圖例顯示,axes是我們真正繪圖的區域,xlabel,ylabel即x,y軸表示含義,title即圖的標題,tick和tick_label為刻度值和在該刻度值上顯示的文字。值得注意的是我們在進行繪圖時,上面各個部分的位置資訊都是參考其上一級的位置資訊而言的的。

圖形調整

位置調整

位置表示

Matlab中位置通常用向量[left bottom width height]來表示,left表示距離左側邊界的距離,bottom表示距離下邊界的距離,width表示影像的寬度,height表示影像的高度。

在表示這些量時有很多單位可以選擇,建議選擇normalized。

Figure位置調整

在Figure中共有三個位置資訊,它們表示的含義大體相近,但亦有所區別。

  • Position 屬性是最常用的,用於直接設定圖形視窗在螢幕上的位置和大小。
  • OuterPosition 屬性則用於獲取或設定包括所有裝飾元素在內的整個圖形視窗的大小和位置。
  • InnerPosition 屬性主要用於調整繪圖區域的大小和位置,而不考慮視窗的邊框、標題欄等裝飾元素。
    在實際使用上,我們往往只用設定其中一個就可,實驗上來看,Position和OuterPosition似乎沒有太大區別。另外Figure的位置資訊是參考螢幕左下角的點而言的。

axes位置調整

axes同樣有上面上個位置資訊,由於Figure是其上一級,因此它的位置資訊是參考Figure的左下角而言的。如下圖:

其他部分位置調整

對於其他部分的位置而言,大多數都包含了Position資訊,此外對於title還有額外的HorizontalAlignment和VertivalAlignment資訊(可以設定為left,right和center),當設定為居中時,那麼將以居中點來確定到參考點的距離。

座標軸刻度調整

在我們進行繪圖時,有時候我們期望座標的刻度以日期形式顯示,這時候x,y的tick_label就排上用場了。比如設定xtick = [1,2,3,4], xtick_label為['a','b','c','d']那麼實際出來的效果就是在刻度為[1,2,3,4]的地方顯示a,b,c,d。
如下圖所示:

放大指定區域的圖形

區域性區域放大圖的原理很簡單,其實就是copy一份一模一樣的影像,然後重新設定的新圖的xlim和ylim然後對圖片放大。
下面展示,設定放大圖的全過程。

  • 複製一份影像放一起

  • 設定複製影像的顯示範圍(屬性檢查器->標尺->xlim,ylim)

    這樣就基本上完成了影像的放大

  • 將放大影像移動到原影像中,並新增箭頭

相關文章