在下图中, 由以下 Ti 生成钾Z 代码,
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h] \centering
\begin{tikzpicture}[scale=2,
% function
declare function={ f(\x) = pow(\x,4)/16-pow(\x,3)/4+1.1*\x+0.5; },
% styles
faint/.style={thin, gray},
normal/.style={thin, black}]
% axes
\draw [thick, ->] (0, 0) -- (0, 5);
\draw [thick, ->] (0, 0) -- (4.5, 0);
\foreach \x/\xstr/\ystr in {0.6/$a = x_1$\kern 21pt/$f(a) = y_1$, 2.0/$x_2$/$y_2$, 3.3/$x_3$/$y_3$, 3.8/$\kern 19pt x_4 = b$/$f(b) = y_4$} {
% partitions (x-axis, y-axis)
\draw [faint] (\x, {f(\x)}) -- (\x, 0) node [normal, below, text height=8pt] {\xstr};
\draw [faint] (\x, {f(\x)}) -- (0, {f(\x)}) node [normal, left] {\ystr};
% points
\fill (\x, {f(\x)}) circle (1pt);
}
% curve
\draw [thick, <->, domain=-0.5:4, samples=50] plot(\x, {f(\x)});
\end{tikzpicture}
\end{figure}
\end{document}
我使用\kern
偏移标签 $a = x_1$ 和 $x_4 = b$,以便 $x$ 始终位于图形上的分区线正下方。这似乎有点不靠谱,我认为应该有更好的方法,比如我如何&
在align
环境中插入一个以使文本与特定字符对齐。
那么还有更好的方法吗?
答案1
您也可以使用\phantom
它,因为移位量不是恒定的,因此不值得自动化。但是我会使用 pgfplots。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}[declare function={f(\x)=pow(0.5*\x,4)-pow(\x,3)/4+1.1*\x+0.5;}]
\begin{axis}[
axis lines*=middle,
xtick={0.6,2,3.3,3.8},ytick=data,
xticklabels={$a=x_1\phantom{a=}$,$x_2$,$x_3$,$\phantom{{}=b}x_4=b$},
yticklabels={$f(a)=y_1$,$y_2$,$y_3$,$f(b)=y_4$},
typeset ticklabels with strut]
\addplot[only marks,samples at={0.6,2,3.3,3.8}] {f(x)};
\addplot[thick, <->, domain=-0.2:4, samples=50] {f(x)};
\pgfplotsextra{
\foreach\x in{0.6,2,3.3,3.8}{
\draw[thin, gray] (\x,0) |- (0,{f(\x)});
}
}
\end{axis}
\end{tikzpicture}
\end{document}