Thursday, June 04, 2009

[Latex]Paper中的作图+Latex相关

很凌乱的一些东西.在这里做个笔记.
====================第一部分 作图. ====================
作图工具很多,最最基本的包括excel, matlab.就不在这里复述.反正我都不爱用.excel的图太幼齿,matlab太笨拙.这里要提matplotlib以及gnuplot
(1) matplotlib
这是python的一个用于科技绘图的库.这个库比较神奇的一点是封装了一系列语法极其类似matlab的绘图函数在pylab这个文件中. 这样只要你安装了matplotlib,在一个python源程序当中import了pylab之后,就可以用诸如plot(X,Y)这样的matlab语法来绘制函数图像.实在是非常方便.
如果有python 和matlab的基本知识,上手时间几乎为0

由于图片在Latex文档中编译出来后通常会显得小, 先需要把默认字体增大:
import pylab
params = {'backend': 'ps',
'axes.labelsize': 14,
'text.fontsize': 10,
'lines.linewidth':2,
'legend.fontsize': 16,
'xtick.labelsize': 14,
'ytick.labelsize': 14}
pylab.rcParams.update(params)


(2) gnuplot
Unix世界中非常老资格的一个绘图工具.gnuplot的语法简单明了,学习曲线比较平缓.

gnuplot中有terminal这样一个概念.terminal其实是指输出设备.gnuplot支持接近80种不同的设备(或格式).我们常用的包括x11,png,postscript等等.选择x11的话就可以在X window中显示出我们要绘制的图像;而选择png, postscript的话则是告诉gnuplot你选择png 或者postscript格式的文件作为输出设备. gnuplot允许我们针对不同的输出设备做出统一或者不同的设定. 而且我们可以把设定写在~/.gnuplot当中让每次gnuplot启动的时候自动加载.比如我的设定包括
set terminal postscript eps enhanced color linewidth 2 font "Helvetica, 20"
set terminal x11 enhanced font "Helvetica, 15"
对于输出为eps的文件,我希望它字体大一些,线宽粗一些.通常paper里需要这样设定才能看得清楚.

绘图的基本用法包括
画一段sin(x)曲线
plot sin(x)
这里x取值范围默认是[-10,10],如果要改变x取值范围
set xrange [1:10]
如果要从文件里读入数据,比如用'data.txt'文件中第1列作x第3列作y作图,线段类型为"lines",这个curve取名为data1
plot 'data.txt' using 1:3 with lines title 'data1', 'data.txt' using 1:3 with lines title 'data2'
设置xlabel 以及字体(可选)
set xlabel "time t" font "Arial, 15"
设置输出文件名, 默认是STDOUT
set output "data.eps"
更新/重画
replot

(3) ploticus
一个商用绘图工具,不过好在免费.绘制出来的figure非常精美.但学习曲线非常陡.

================第二部分 Latex里插图================
(1)最基本的用法 无非就是先
\usepackage{graphicx}

然后在正文中需要插图的地方,
\begin{figure}[t]
\begin{center}
\showthe\columnwidth % Use this to determine the width of the figure.
\includegraphics[width=\columnwidth]{fig1.eps}
\caption{\label{fig:sin_cos} Plot of the sine and cosine functions.}
\end{center}
\end{figure}
如果是pdflatex, 可以支持png等非矢量格式图片

(2)使用psfrag这个包, 可以在latex文档中对插入的eps图片进行文字替换, 或者字体缩小/放大:
\begin{figure}[t]
\begin{center}
\psfrag{sin(x)}{$\sin(x)$}
\psfrag{cos(x)}{$\cos(x)$}
\psfrag{x (radians)}{$x$ (radians)}
\psfrag{y}{$y$}
{\footnotesize                  % Replace tick-lables with smaller font.
\psfrag{1.0}{1.0}
\psfrag{0.5}{0.5}
\psfrag{0.0}{0.0}
\psfrag{-0.5}{-0.5}
\psfrag{-1.0}{-1.0}
\psfrag{-8}{-8}
\psfrag{-6}{-6}
\psfrag{-4}{-4}
\psfrag{-2}{-2}
\psfrag{0}{0}
\psfrag{2}{2}
\psfrag{4}{4}
\psfrag{6}{6}
\psfrag{8}{8}
\showthe\columnwidth % Use this to determine the width of the figure.
\includegraphics[width=\columnwidth]{fig2.eps}
} % Note that the psfrag commands only work in the top-most environment.
\caption{\label{fig:sin_cos} Plot of the sine and cosine functions.}
\end{center}
\end{figure}

No comments: