2008/03/19

latex的图片排版: subfigure

没有评论:
目的: 使用latex的subfigure并排放置两张图.

注意要使用宏包\usepackage{graphicx}和\usepackage{subfigure}

\begin{figure} \centering
\subfigure[figure 1 title.] { \label{fig:a}
\includegraphics[width=0.8\columnwidth]{fig1.eps}
}
\subfigure[figure 2 title.] { \label{fig:b}
\includegraphics[width=0.8\columnwidth]{fig2.eps}
}
\caption{ general title. }
\label{fig}
\end{figure}

Note:
如果前图漏掉 \caption{},后图的编号可能不会从(a)算起。改变编号用
\setcounter{subfigure}{0};
引用子编号\subref{fig:subfig};
改变间距用 \vspace{.3in} 和\hspace{.1in},置于两subfigure间.

2008/03/08

利用Python绘制论文图片: Gnuplot,pylab

没有评论:
python 生成 数据,gnuplot/pylab 画图, 嵌入到latex。 这里:python 调用 gnuplot 画图,set output 到 png or latex.

首先,安装数值计算包 numpy, scipy

1. NumPy 1.04 : numpy is a new version of numarray. numpy,已替代Numeric.
http://numpy.scipy.org

sudo apt-get install python-numpy

import numpy

2. SciPy library depends on NumPy

install scipy: (only for optimized package using LPAS, since numpy contains it.)
www.scipy.org


然后,安装 gnuplot 或者 pylab

安装PyLab: plotting with the pylab module from matplotlib, depending on numpy. free from: http://matplotlib.sourceforge.net/

install:
sudo apt-get install python-matplotlib
import math
import pylab # a new name of matplotlib


安装python-gnuplot module
(by Michael haggerty http://gnuplot-py.sourceforge.net/)

sudo apt-get install python-gnuplot


参考书 python scripting for computational science.pdf




Python-Gnuplot 1.7 interface

没有评论:

all python module files are located under ./build/lib/Gnuplot
demo.py
Gnuplot.py
PlotItems.py

Interface intrdocution:
PlotItems.Data()

if want to redraw, can use replot()
gp.plot(p1)
gp.replot(p2)

or add all into one itemlist, then plot()
gp._add_to_queue( (p1,p2,p3) )
gp.replot()

一些 tricks:

如果要在一个page上画多副图,可以
======================================
set multiplot ;会抹掉前面的图
plot ...

set parametric ;参数画图
plot [0:2*pi] cos(t),sin(t)
unset parametric ;恢复

plot ... ;标题会和第一条标题重叠

==========
如果不用set multiplot,可以 plot, replot,replot...

Gnuplot两种绘图模式:multiplot

没有评论:

在 gnuplot> 模式下,
plot 命令会冲掉前面的图,而
replot 会在原图上画,并且顺序排列图标志文字

在multiplot>模式下,
plot和replot都不会冲掉前面的图,但
plot 的标志文字会和前面的覆盖
replot的标志文字不会和前面的覆盖,顺序排列

但是参数画图不能用replot, 后面也不能接其他replot。
例如:
set parametric
plot [0:2*pi] cos(t), sin(t) notitle
unset parametric

所以如果目的是多图重叠绘制,并且要用到参数绘图,建议方案是:

* 使用multiplot模式,
* 非参数绘图用 replot
* 参数绘图用 set, plot, unset。缺点是参数绘图的图标文字会重叠,但设成title="" 也可接受。

279 unset multiplot # or else cannot set term to ps
280 set term postscript
281 set output "sample.ps"
282 set multiplot

283 plot x # no previous plot
284 plot x+2

285 set parametric
286 plot [0:2*pi] cos(t), sin(t) notitle
287 unset parametric

288 plot x+3

289 history

Gnuplot支持图片格式,保存,及插入到latex

没有评论:

在文件中置入 gnuplot 绘制的图形

目前支持格式 postscript(*.ps), enhanced postscript(*.eps), x11(screen)

set terminal postscript eps color lw 1 “Helvetica” 20
如果想让线条粗些,可以修改 lw 后面的 1
然后再加上一句这个来设置输出文件:
set output ‘sample.eps’

所有终端在能力上都不相同。其中的一些(如 LaTeX)可能不支持文本的旋转,所以如果您像我们前面那样设置 ylabel,在不同的终端中可能显示不一样。换句话说,您可以在 LaTeX 的特定终端中使用 LaTex 命令。例如, set ylabel "$sin(\\theta)$"(注意我们使用两个反斜杠产生一个 LaTex 所需的反斜杠 —— gnuplot 在将双引号中所括的字符串传送到终端驱动程序之前,先对其进行反斜杠处理)。现在,您可以使用 \input{output.tex} 将输出文件包含在 LaTeX 文件中。要在 PostScript 终端中获得相同的结果,使用相应的 PostScript 命令: {/Symbol q} 。在 enhanced PostScript 和 LaTeX 中,您可以使用表示法 x^{superscript}和 x_{subscript} 得到上标文字。还要注意缩写的终端和输出命令:

eps 驱动程序的能力set term post enh
# enhanced PostScript, essentially PostScript
# with bounding boxes
set out 'gplt.eps'
set xlabel '{/Symbol q_1}
set ylabel 'sin^2({/Symbol q_1})'
plot sin(x)**2

控制比例和长宽比

默认情况下,gnuplot 对 x 轴和 y 轴都使用比例系数 1,但是它对控制图形的长宽比(y 轴长度与 x 轴长度的比率)不起作用。终端驱动程序使用终端的默认长宽比。比例系数、长宽比或者两者都可以使用 set size 命令指定,例如:

# square is synonymous to an aspect ratio of 1;
# scale y-axis by 2, retain x-axis size
set size ratio square 1,2

gnuplot 使用给定的长宽比能否成功绘制图可能受到终端能力的限制。 set size 也是与 multiplot 命令一起使用才有用,multiplot 命令用于在同一输出屏幕或文件中生成多个图。