tkz-fct:当轴具有非平凡步长时,在正确的坐标中定义函数

tkz-fct:当轴具有非平凡步长时,在正确的坐标中定义函数

请考虑以下示例:

\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-fctgnuplot

\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}

在此处输入图片描述

相关内容