请考虑以下示例:
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage{tkz-base}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\tkzInit[xmax=14.9,ymax=1.1,ystep=0.2,xmin=-0.5,ymin=0]
\tkzGrid
\tkzAxeXY[/tkzdrawX/label=$t$ in s,/tkzdrawY/label=$v$ in m/s]
\draw[color=blue, domain=0:3] plot (\x,{\x/3});
\end{tikzpicture}
\end{document}
它应该绘制函数 f(x)=x/3。显然,图形的斜率应该使得 f(3)=1。但是,我们有 f(3)=0,2,因为 ystep=0.2 而不是 1。因此,坐标是根据直接显示的内容(0.2 是一个正方形的大小)计算的,而不是根据坐标系的设置所暗示的内容计算的。除了重新定义所有函数(例如,在定义函数时使用 5*\x/3 而不是 \x/3)之外,还有其他方法可以改变这种行为吗?如果可能的话,TeX 应该根据实际坐标而不是“图片上的正方形数量”进行计算。
答案1
拥有tkz-fct
和gnuplot
\documentclass[12pt,a4paper]{article}
\usepackage{tkz-base}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=0.7]
\tkzInit[xmax=14.9,ymax=1.1,ystep=0.2,xmin=-0.5,ymin=0]
\tkzGrid
\tkzAxeXY[/tkzdrawX/label=$t$ in s,/tkzdrawY/label=$v$ in m/s]
%\draw[color=blue, domain=0:3] plot (\x,\x/3);
\tkzFct[blue,samples=2,domain=0:3]{\x/3}
\end{tikzpicture}
\end{document}
使用tkz-Fct
,要绘制线段,您还可以手动定义两个点\tkzDefPoint
\documentclass[12pt,a4paper]{article}
\usepackage{tkz-base}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=0.7]
\tkzInit[xmax=14.9,ymax=1.1,ystep=0.2,xmin=-0.5,ymin=0]
\tkzGrid
\tkzAxeXY[/tkzdrawX/label=$t$ in s,/tkzdrawY/label=$v$ in m/s]
%\tkzFct[blue,samples=2,domain=0:3]{\x/3}
\tkzDefPoint(3,1){A}
\draw[blue](0,0)--(A);
\end{tikzpicture}
\end{document}
和pgfplots
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
scale only axis,
width=12cm,
height=8cm,
xmin=0, xmax=14.9,
ymin=0, ymax=1.1,
axis x line=bottom,
axis y line=left,
grid=both,
xtick={0,1,...,14},
%ytick={0,0.2,...,1},%<- uncommnet if necessary
xlabel={$t$ in s},
xlabel style={
at={(xticklabel* cs:1)},
anchor=north west,
inner sep=2pt,
},
ylabel={$v$ in m/s},
ylabel style={
at={(yticklabel* cs:1)},
rotate=-90,
anchor=west,
inner sep=2pt,
},
]
\addplot [blue] [domain=0:3,samples=2] {x/3};
\end{axis}
\end{tikzpicture}
\end{document}