我想以这样的方式移动原点,因为下面的代码将导致圆圈出现在以红色标记的点的中心。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{color}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[shift={(0,0)}]
\begin{axis}[
ticks=none,
axis lines = middle,
axis line style={->},
ymin=0,
xmin=-3,
xmax=3,
xlabel={$Y$},
ylabel={$\pi$}]
\addplot[black, domain=-2:2] {x+3};
\addplot[red,mark=*] coordinates {(0,3)};
\node[coordinate, pin=0:{target}] at (axis cs:0.5, 3){};
\end{axis}
\draw (0,0) circle[radius=1];
\end{tikzpicture}
\end{document}
答案1
解决方案 1
假设你已经知道要放置圆的坐标,即。你可以直接在该坐标处(axis cs:0,3)
放置 来绘制一个圆,即node
\node[draw,circle,inner sep=0,miminum size=1cm] at(axis cs:0,3){};
解决方案 2
或者,您可以命名节点,例如target
,然后可以(target)
使用
\draw (target) circle[radius=1];
解决方案 3
假设您需要计算放置圆的坐标。那么您可以使用intersections
库来计算该点:
{x+3}
通过添加name path global=line
命令来命名该行\addplot
:\addplot[black, domain=-2:2,name path global=line] {x+3};
命名垂直轴
\path[name path global=yaxis](axis cs:0,0)--(axis cs:0,5);
并使用绘制圆圈
\draw[name intersections={of=line and yaxis, by=target}](target)circle[radius=1];
完整代码
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{color}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[shift={(0,0)}]
\begin{axis}[
ticks=none,
axis lines = middle,
axis line style={->},
ymin=0,
xmin=-3,
xmax=3,
xlabel={$Y$},
ylabel={$\pi$}]
\addplot[black, domain=-2:2,name path global=line] {x+3};
% \path[name path global=yaxis](axis cs:0,0)--(axis cs:0,5);
\addplot[red,mark=*] coordinates {(0,3)};
\node(target)[pin=0:{target},draw,circle,inner sep=0,minimum size=1cm] at (axis cs:0,3){};
\end{axis}
% \draw (target) circle[radius=1];
% \draw[name intersections={of=line and yaxis, by=target}](target)circle[radius=1];
\end{tikzpicture}
\end{document}
输出
答案2
你所寻找的其实是你“抓住”轴的点。
反过来,这是每个 tikz 节点都可用的一般特性:每当你放置一个 tikz 节点时,你必须提供密钥at
来说明将它放在哪里,并且你必须提供一个anchor
在哪里抓取节点(即,节点内部的哪个位置要放置在 指定的位置at
)。
对于轴来说也是如此(因为轴本质上是一种特殊的 tikz 节点)。
默认情况下,轴具有at={(0,0)}
。我们只需采用anchor
。为此,您只需将名称“target”分配给目标坐标并使用anchor=target
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{color}
\usepackage{tikz}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}[shift={(0,0)}]
\begin{axis}[
anchor=target,
ticks=none,
axis lines = middle,
axis line style={->},
ymin=0,
xmin=-3,
xmax=3,
xlabel={$Y$},
ylabel={$\pi$}]
\addplot[black, domain=-2:2] {x+3};
\addplot[red,mark=*] coordinates {(0,3)};
\node[coordinate, pin=0:{target}] (target) at (axis cs:0, 3){};
\end{axis}
\draw (0,0) circle[radius=1];
\fill (0,0) circle[radius=1pt];
\end{tikzpicture}
\end{document}