2010年4月16日 星期五

MATLAB colormap

作者: hantis (呢呢是豬) 看板: Hantis
標題: [隨寫] Note: MATLAB colormap
時間: Fri Apr 16 09:15:47 2010


   contourf 之類的 color shading 圖
   有兩個東西會混淆: colormap, caxis

   colormap 是給定一個顏色矩陣
   讓作圖的時候依據data的值是多少來填色
   所以 hot, gray, hsv, winter, autumn, ...
   這些其實是產生顏色矩陣的函數
   例如有個顏色矩陣產生函數叫做 cmatrix
   其色調是從黑色到白色
   那麼

   colormap cmatrix

   作用等同於

   colormapt(cmatrix(128))

   cmatrix(128)所產生的東西是 [R,G,B]
   其中 R,G,B 三個 element 都是從 0 到 1 的 column matrix
   也就是 linspace(0,1,128)'

   所以想使用任意色調來著色
   只需自行產生色調矩陣
   然後放進 colormap 即可

   例如最高值是藍色 [0 0 1]
   最低值是白色 [1 1 1] 的色調
   可以用
   cmatrix = [linspace(1,0,Nc);linspace(1,0,Nc);ones(1,Nc)]';
   colormap(cmatrix)
   這樣就行了
   其中 Nc 是想要分割出來的色段數
   MATLAB內定值是 128

   至於 caxis
   是定義了 colormap 之後
   自行調整 data 中哪個數字視為 colormap 的最高值或最低值
   MATLAB內定是把 data 中的最高值
   以 colormap 的最下面一個顏色來填
   而 data 中的最低值則以第一個顏色來填
   例如上面的 cmatrix
   第一個顏色是白色 [1 1 1]
   最後一個顏色是藍色 [0 0 1]
   假如 contourf 的 Z data 是
   [1 2 3 4;
    5 6 7 8;
    9 8 7 6;
    5 4 3 2]
   那麼在 9 對應到的位置就會填上藍色
   在 1 的地方會填上白色

   假如希望3以下的都用白色來填
   7以上的都用藍色來填
   則可以
   caxis([3 7])
   也就是說
   沒下這道命令的話內定值是 caxis([1 9])
   或者說是 caxis([min(min(Z)),max(max(Z))])

2010年4月8日 星期四

amscd

作者: hantis (呢呢是豬) 看板: Hantis
標題: [隨寫] Note: amscd
時間: Thu Apr  8 11:54:55 2010


   This is an extremely useful package for communative diagrams,
   such as

      after 10 years
   A ----------------> B

   The above example can be obtained by

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   ...
   \usepackage{amscd}
   ...

   \[
   \begin{CD}
   A @>\text{after 10 years}>> B
   \end{CD}
   \]
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   Note that the CD environment must be inside the math mode.
   So \begin{align*}\begin{CD} XXX \end{CD}\end{align*} is ok,
   and so is $\begin{CD} XXX \end{CD}$.

2010年4月1日 星期四

jpg for latex

作者: hantis (呢呢是豬) 看板: Hantis
標題: [隨寫] Note: jpg for latex
時間: Thu Apr  1 09:50:22 2010

This note was written long time ago but I didn't post on my board.
Here it goes:
==================================================================
bmeps是將點陣圖如jpg png等
轉成eps或ps圖的driver
直接在黑黑的DOS視窗執行就可以
例如:
bmeps XXX.jpg XXX.ps
就可以把XXX.jpg轉出一張XXX.ps
接著就可以用熟悉的方法來插入圖
然後latex -> dvips -> ps2pdf
不會有問題

不過這個轉圖法會是黑白的
要轉出彩色的則多下個 -c

bmeps -c XXX.jpg XXX.ps
這樣的ps圖就是彩色的
只是這樣的ps圖好像會很大
爛爛的解析度就會到1MB以上

另外一個方法更好
在吳聰穎、吳聰慧的書有提
不過不是很完全
這個方法
可以用\includegraphics{XXX.jpg}直接來
直接執行latex的話會掛掉
因為它需要bounding box
所以要用這個方法的話
得先bmeps -b XXX.jpg XXX.bb
這樣就會generate出XXX.bb這個宣告bounding box的檔
(其實這個bounding box也可以直接下
例如\includegraphics[bb=0 0 300 400,width=5cm,...]{XXX.jpg}
可是這個方法好像不太好)
有了bb檔之後
還要在PREAMBLE下
\DeclareGraphicsRule{.jpg}{eps}{.bb}{}
這樣
latex就OK

這樣子compile出來的dvi是OK的
但是直接dvips會把彩色圖弄成黑白的
這時候要再多下-I c
dvips這個driver有很多option
其指令格式是dvips [option] filename
其中[option]可以有很多
有一個網站有summarize
總之
dvips -I c filename
即可把filename.dvi成功轉成彩色的filename.ps
當然啦
如果本來就沒有jpg圖檔
直接dvips filename是沒有問題的

小結:
欲放入jpg之點陣圖檔最好的方法
1) PREAMBLE放入這行指令
\DeclareGraphicsRule{.jpg}{eps}{.bb}{}
2) 插入圖:
\includegraphics[...]{XXX.jpg}
3) 在Command Prompt製造XXX.bb的bounding box檔:
bmeps -b XXX.jpg XXX.bb
4) 開始compile以及轉檔:
latex main
dvips -I c main
ps2pdf main.ps

要在beamer的title page放圖的指令:
\titlegraphic{...}
例如
\titlegraphic{\includegraphics[width=2cm]{XXX.jpg}}
放在maketitle之前都可以
這個指令會自動把圖放在正下方
如果要放左下角 可以在\includegraphics之前加個\flushleft
當然 \flushright就到右下角
如果要放兩個 一左一右
可以\flushleft \includegraphics[...]{...} \hfill \flushright
\includegraphics...

無法解決的問題:
通常把這行\titlegraphic指令插在\date之前
但是swp55總是會自動把它移到\maketitle之後
以致於圖會不見
所以目前只能在投影片確定好之好
要真正generate講稿的時候
用WinEdt 或是記事本
強制把那行指令移過去對的地方
然後再latex