分類: 實用工具

metapost:畫出高品質的圖形

metapost 是一個可以讓你畫出非常高品質圖形的工具,它是我看過最棒的畫圖工具之一,我的論文都是用它來畫的,之所以選擇它是因為我需要用 tex 打數學式子與中文,如果只是要單純的數學式子不需要中文的話,另一套 ePiX 也是可以考慮看看,它畫出的圖形也是很漂亮。


想學 metapost 當然是先去從李果正先生的果正札記看起是最好的,不過要真的看完其實要花上一段時間的,以下是個小範例,示範如何將自己的資料畫出來,並加上數學式子與中文。

假設我們要畫的資料檔 probvar.d 內容如下:

3 0.621488417939872
4 0.822079842286841
5 0.865450961064564
6 0.91030064070971
7 0.90438639724002
8 0.913750616067028
9 0.926071956628881
10 0.924593395761459
11 0.930507639231148
12 0.936421882700838
13 0.932479053721045
14 0.931000492853623
15 0.924593395761459
16 0.93198620009857
17 0.935929029078364
18 0.94135041892558
19 0.95069033530572
20 0.938856015779093

而我們的 metapost 檔 probvar.mp 內容為:

verbatimtex
%&latex
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{cwhbc}
etex

input graph

beginfig(1)
draw begingraph(3in,2in);
glabel.lft(btex \vbox{\hbox{觀測值 $Y_{t,B+i}$ 之} \hbox{預測區間覆蓋機率}} etex, OUT);
glabel.bot(btex $t$ etex, OUT);
gdraw "probvar.d" withpen pencircle scaled 1.0pt;
for y=0.6,0.7,0.8,0.9,0.95:
grid.lft(format("%g",y), y) withcolor .85white;
endfor
autogrid(grid.bot,) withcolor .85white;
gdraw "probvar.d" withpen pencircle scaled 1.0pt;
endgraph;
endfig;

verbatimtex
\end{CJK}
\end{document}
etex
end

而要產生圖形就直接呼叫 mpost 來處理:

$ mpost probvar.mp

這個指令會產生 probvar.1 這個檔案,而要轉成 eps 檔的話,我是使用 mps2eps 這隻小 script 來轉檔:

$ mps2eps probvar.1

轉出來的 eps 檔就可以直接用在 LaTeX 或是任何地方了。事實上如果只是簡單圖形用在 TeX 中,可以直接使用 probvar.1 這個檔,不過我之前的經驗是有時候這樣直接加進 TeX 檔中會出錯,尤其是有用到中文的時候,我懶得處理這些麻煩,就直接全部轉成 eps 檔再來使用,一勞永逸。

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago