圆弧上的节点定位不正确

圆弧上的节点定位不正确

我想将一个带标签的节点定位\gamma在弧线上,但我通常使用的方法会产生错误的定位:标签离我绘制的曲线太远了。这是我的代码:

\documentclass{article}
\usepackage[a4paper, top=2cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{amssymb}
\usepackage{tikz-cd}
\usepackage{pgfplots}
\usepackage{tikz,tikz-3dplot}  
\usetikzlibrary{arrows,decorations.markings,intersections,patterns,shadings,calc,shapes,positioning,  pgfplots.fillbetween, shapes.geometric}
\pgfplotsset{compat=newest}
\definecolor{azz}{RGB}{175,238,238}
\begin{document}
\begin{center}
\begin{tikzpicture}[>=latex,
]
\newcommand\xmi{-1.2};
\newcommand\xma{1.2};
\newcommand\yma{1.2};
\newcommand{\radi}{1};
  \begin{axis}[
    clip=false,
    width=16cm,
    axis equal image,
    xmin=\xmi, xmax=\xma,
    ymin=\xmi, ymax=\xma,
    axis lines=middle,
    no markers,
    xtick={0},
    ytick={0},
    xticklabels={,,},
    yticklabels={,,},
    extra x ticks={0},
    extra x tick style={xticklabel style={anchor=north east}},
    extra x tick label={\Large $0$},
    xlabel={\Large $\mathbb{R}$},
    ylabel={\Large $i \mathbb{R}$},
    axis on top
    ]
  \draw[fill=azz!100!white, opacity=0.7] (0,0) circle (\radi) ;
\draw[line width=2pt] (\radi,0)   arc[start angle=0,end angle=90,radius=\radi] node[pos=0.5]{\Large $\gamma$};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}

这将产生以下输出:

错误的

如果我改变,情况不会有太大不同。这些是分别具有和end angle角度的输出。end angle=180end angle=360

错误_180

错误_360

我该如何解决这个问题?

答案1

一些观察:看起来您使用 pgfplots 只是为了绘制轴,在这种情况下我认为这是一种故意的懒惰......您可以使用纯 Tikz 很好地绘制它们,甚至使用更少的代码。

我怎么看到这个的?好吧,注释掉所有“不必要的”包很快就出现了错误:环境轴未定义

\documentclass{article}
\usepackage[a4paper, top=2cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{amssymb}
%\usepackage{tikz-cd}% <<<<<<<<<
%\usepackage{pgfplots}% <<<<<<<<<
\usepackage{tikz,tikz-3dplot}  
%\usetikzlibrary{arrows,decorations.markings,intersections,patterns,shadings,calc,shapes,positioning,  pgfplots.fillbetween, shapes.geometric}% <<<<<<<<<
%\pgfplotsset{compat=newest}% <<<<<<<<<
\definecolor{azz}{RGB}{175,238,238}
\begin{document}
\begin{center}
\begin{tikzpicture}[>=latex,
]
\newcommand\xmi{-1.2};
\newcommand\xma{1.2};
\newcommand\yma{1.2};
\newcommand{\radi}{1};
  \begin{axis}[% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    clip=false,
    width=16cm,
    axis equal image,
    xmin=\xmi, xmax=\xma,
    ymin=\xmi, ymax=\xma,
    axis lines=middle,
    no markers,
    xtick={0},
    ytick={0},
    xticklabels={,,},
    yticklabels={,,},
    extra x ticks={0},
    extra x tick style={xticklabel style={anchor=north east}},
    extra x tick label={\Large $0$},
    xlabel={\Large $\mathbb{R}$},
    ylabel={\Large $i \mathbb{R}$},
    axis on top
    ]
  \draw[fill=azz!100!white, opacity=0.7] (0,0) circle (\radi) ;
\draw[line width=2pt] (\radi,0)   arc[start angle=0,end angle=90,radius=\radi] node[pos=0.5]{\Large $\gamma$};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}

您可以混合使用 pgfplots 和 tikz,但要考虑互操作性,请参阅 pgfplots 中的第 4.26 章。不知道您是否根据问题做了这件事。如果没有,这可能是“意外行为”的根本原因。

使用 Tikz 可以轻松根据需要绘制 x 轴和 y 轴。没有检查节点是否放置正确。这里看起来 pgfplots 为相对于 处的节点的弧分配了 r=2(或更大)的半径[pos=.5]

不幸的是,我无法从你的问题中读出你还想到了什么,看看你想要使用的软件包集。


已验证:这就是问题所在,你混合使用 pgfplots 和 tikz 的方式。注释掉 axis 语句会导致:

结果2

\begin{tikzpicture}[>=latex,
]
\newcommand\xmi{-1.2};
\newcommand\xma{1.2};
\newcommand\yma{1.2};
\newcommand{\radi}{1};
%  \begin{axis}[
%    clip=false,
%    width=16cm,
%    axis equal image,
%    xmin=\xmi, xmax=\xma,
%    ymin=\xmi, ymax=\xma,
%    axis lines=middle,
%    no markers,
%    xtick={0},
%    ytick={0},
%    xticklabels={,,},
%    yticklabels={,,},
%    extra x ticks={0},
%    extra x tick style={xticklabel style={anchor=north east}},
%    extra x tick label={\Large $0$},
%    xlabel={\Large $\mathbb{R}$},
%    ylabel={\Large $i \mathbb{R}$},
%    axis on top
%    ]
  \draw[fill=azz!100!white, opacity=0.7] (0,0) circle (\radi) ;
\draw[line width=2pt] (\radi,0)   arc[start angle=0,end angle=90,radius=\radi] node[pos=0.5]{\Large $\gamma$};
%\end{axis}
\end{tikzpicture}

相关内容