图表


图表就是根据提供的数据或函数画出图形。tikz的图表作为路径元素有两个版本, 第一个是

... --plot图表参数 ...;
这个版本延续当前路径或子路径,另一个版本是
... plot图表参数 ...;
它会移动到“图表参数”的第一个点。图表参数有下列形式
[选项]coordinates{坐标1,坐标2,...}
[选项]file{文件名}
[选项]坐标表达式
[选项]function{gnuplot 公式}

第一种形式以指定的坐标作为参数,比如

\begin{tikzpicture}
\draw (0,0) -- (1,1) plot coordinates {(2,0) (4,0)};
\draw[color=red,xshift=5cm]
(0,0) -- (1,1) -- plot coordinates {(2,0) (4,0)};
\end{tikzpicture}

第二种从一个外部文件中读取数据,比如

\tikz \draw plot[mark=x,smooth] file {plots/pgfmanual-sine.table};
目前只支持一种格式:每行包含用空格分隔的两个数,两个数之后任何内容都被忽略, 以“%”或“#”号开始的行被看作空行。

第三种形式中的“坐标表达式”看上去就像一个正常的坐标,只不过坐标的不同部分可以包含 变量以及变量表达式。而所谓变量,就是一个宏,即以“\”开始,后面紧跟标识符,比如“\x” 就是一个变量。下面的选项会影响图表

variable=表示变量的宏
samples=采样数
domain=变量采样的初始值:变量采样的结束值
samples at={变量值列表,逗号分隔}
比如
\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-1.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-1.2) -- (0,4.2) node[above] {$f(x)$};
\draw[color=red] plot (\x,\x) node[right] {$f(x) =x$};
\draw[color=blue] plot (\x,{sin(\x r)}) node[right] {$f(x) = \sin x$};
\draw[color=orange] plot (\x,{0.05*exp(\x)}) node[right] {$f(x) = \frac{1}{20} \mathrm e^x$};
\end{tikzpicture}

第三种形式要用到数学表达式,tikz的数学表达式相当自然,下面给出部分基本表达式及其含义

x+y 两个数相加
x-y 两个数相减
-x 相反数
x*y 两个数相乘
x/y 两个数相除
x^y x的y次方
x! x的阶乘
x r 把x转换为弧度
x?y:z 如果x是真则y,否则z
x == y 判断是否相等
x > y 大于
x < y 小于
x != y 不等于
x >= y 大于或等于
x <= y 小于或等于
x && y 与
x || y 或
!x 非
(x) 括号表示优先级
abs(x) 绝对值
sqrt(x) 平方根
e 自然数2.718281828
exp(x) e的x次方
ln(x) 自然对数
log10(x) 以10为底的对数
log2(x) 以2为底的对数
mod(x,y) 求余数
round(x) 四舍五入到最近的整数
floor(x) 向下舍入到最近的整数
ceil(x) 向上舍入到最近的整数
int(x) x的整数部分
frac(x) x的小数部分
real(x) 确保x含有小数点
pi 圆周率
rad(x) 转换为弧度
deg(x) 转换为度数
sin(x) 正弦
cos(x) 余弦
tan(x) 正切
sec(x) 正割
cosec(x) 余割
cot(x) 余切
asin(x) 反正弦
acos(x) 反余弦
atan(x) 反正切
atan2(x,y) y/x的反正切

第四种情况需要安装gnuplot程序。

有时我们需要在图表上打个记号,一个叉,一个圆等等,这可以通过选项

mark=标记符号
设置。缺省情况下,“*”、“+”、“x”可用,其它的要加载库。

还可以通过选项

mark repeat=r
指定每r个标记一次。选项
mark phase=p
告诉tikz:先标记第p个,然后第(p+r)个,(p+2r)个,以此类推,比如
\tikz \draw plot[mark=x,mark repeat=3,mark phase=6,smooth] file {plots/pgfmanual-sine.table};

标记符号的大小由选项

mark size=大小
这个大小对于不同的形状含义不同,可能是半径,也可能是长宽。

标记好受到风格

every mark
的影响。

缺省情况下,图表的两个坐标将被直线段连接,但是也可以指定其它的连接方式:

sharp plot
smooth
tension=张力
smooth cycle
const plot
const plot mark left
const plot mark right
jump mark left
jump mark right
ycomb
xcomb
polar comb
ybar
xbar
ybar interval
xbar interval
only marks


目录