在 \draw plot 的相对坐标处定义节点

在 \draw plot 的相对坐标处定义节点

我无法修复这个简单的图。我想我错过了什么,但我无法指出是什么!你能告诉我为什么(a)不在midway红线处吗?

\documentclass{article}

\usepackage{tikz}

\begin{document}

\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 [midway,inner sep=0] (a) {} node[right] {$f(x) =x$};
\draw[->] (4,1) node[right] {this is not required (a)} -- (a) ;
\node[circle,fill,label={above left:this should be (a)}] at (2,2) {};

\end{tikzpicture}

\end{document}

制作图表

这是tikz-抛物线节点位置

答案1

不幸的是,midway(或pos=0.5) 语法不适用于 TikZ 图(如果您使用 pgfplots 绘制图,它会起作用)。

但是,您可以使用decorations.markings库来定义路径上的坐标。以下样式mark position=<pos>(<coordinate name>)将指定名称的坐标放置在路径上指定距离处。如果您需要路径上的多个位置,可以多次调用此样式。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}


\tikzset{
    mark position/.style args={#1(#2)}{
        postaction={
            decorate,
            decoration={
                markings,
                mark=at position #1 with \coordinate (#2);
            }
        }
    }
}

\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, mark position=0.5(a)] plot (\x,\x) node[right] {$f(x) =x$};
\node at (a) [left] {this is (a)};



\end{tikzpicture}

\end{document}

相关内容