2011年6月22日

[心得]gnuplot in action -- chapter 11

這一章應該早點看到的,如果已經在做圖形輸出的人,其實這一章應該先讀,由我早前的文章可以知道,其實各個terminal之間的差異非常大。其實terminal基本上就可以看成gnuplot輸出的平台,gnuplot雖然後稱支援七八十種的平台,其實常用的就那十來種,而且大致上可以分成三類
  • 圖形格式: 舉凡png/jpeg/gif/bitmap都是
  • 互動格式: 目前4.2加入的wxt/win/x11這類最常用來調校選項跟互動的
  • 印表機格式: 主要是postscript/eps

除了互動格式的terminal之外,大多的terminal都是輸出到檔案,未必是即時輸出。另外一點就是常常使用互動格式terminal繪製圖形完成之後,想切terminal輸出,也是一樣。gnuplot只有在切換terminal的時候或者設定輸出檔案改變的時候,才會輸出檔案內容(flush file context),最後就是最不應該做的關閉gnuplot時候才會輸出。
 所以可以使用set output然強制輸出,一開始切換terminal的時候,內容會輸出至本來的terminal並不是新的terminal的output file

terminal共同的選項基本上有三個size/font/enahnced,size就是畫布大小(這一點postscript有點不一樣),font是指定使用的字型,enhanced則是加強模式,其實目前常用的terminal都支援,主要用以加入一些特殊符號,如geek symbol的pi(3.1415),基本使用格式如下





圖形的terminal語法
set terminal XXX [ size {int:x},{int:y} ] [ [no]crop ]
[ tiny | small | medium | large | giant ]
[ font [ {str:name} [ {int:size} ] ]
| [ "{str:path} [, {int:size} ]" ] ]
[ [no]enhanced ]
[ rounded | butt ]
[ {color0} {color1} {color2} ...]
其中值得注意的是tiny/small/medium/large/giant這一選項,他是一些預設字體大小的設定,tiny是5x8 pixels,small 6x12,medium 7x13(bold),large 8x16,giant 9x15
如果不使用預設的,可以使用set terminal png font "FreeSans,11"這樣的方式,當然字體也可以填入font path,直接指向某個ttf檔案。
png多出了三個重要選項transparent interlace truecolor,這三者不是互斥的,表示是否使用透明,是否用interlace特色(網路才比較用的到),跟使用truecolor,jpeg只有interlace選項


列印terminal語法,postscript可以看這裡,他是有點歷史淵源的,雖然在UI有點過時,但是在當時可以說是設計的相當不錯,目前許多printer依舊可以使用這樣的language
set terminal postscript [ landscape | portrait | eps ]
[ color | mono ] [ blacktext | colortext ]
[ simplex | duplex | defaultplex ]
[ size {flt:x}[in|cm], {flt:y}[in|cm] ]
[ [font] "{str:name}" [ {int:size} ] ]
[ [no]enhanced ]
[ solid | dashed ]
[ linewidth | lw {flt:factor} ]
[ dashlength | dl {flt:factor} ]
[ rounded | butt ]
set terminal postscript [ fontfile [add|delete] "{str:filename}"
| nofontfiles ]
其中重要的是postscript後面的三個設定,可能表示兩種不同的排版,eps是嵌入式圖形比較常用到,color建議要選用mono表示單色(預設是這個:P),當然也使用colortext比較好,這邊特別的是size使用的單位為英吋跟公分,不是pixel,另外有個重要選項就是solid,可讓線條自動變成solid line,postscript除了第一條線是solid line其他開始用不同的dash lines,如果選用solid就會都是solid line,這跟wxt之類的interactive terminal比較一致一點,預設使用的字型是Helvetica。

最後是互動式的terminal,語法分別是
跨平台的wxt,4.2加進來的,覺得相當好用,4.4之後已經變成了預設的terminal

set terminal wxt [ {int:winid} ] [ title "{str:title}" ]
[ [no]enhanced ]
[ font "{str:name} [,{int:size}]" ]
[ [no]persist ] [ [no]raise ] [ [no]ctrl ]
set terminal wxt {int:winid} close

x11 terminal大多linux/unix使用
set terminal x11 [ {int:winid} ] [ title "{str:title}" ]
                 [ [no]enhanced ]
[ font "{str:fontspec}" ]
[ [no]persist ] [ [no]raise ] [ [no]ctrlq ]
[ solid | dashed ]
set terminal x11 [ {int:winid} ] close

aqua,這是mac os常用
set terminal aqua [ {int:winid} ] [ title "{str:title}" ]
                  [ size {int:x} {int:y} ]
[ [no]enhanced ]
[ font "{str:name} [,{int:size}]" ]
[ solid | dashed][dl {flt:dashlength} ]

windows
set terminal windows [ color | monochrome ]
[ [no]enhanced ]
[ font "{str:name} [,{int:size}]" ] 

其他不常用的,書本上也沒啥介紹了 ,我想也懶著看XD

沒有留言: