我想将一个带标签的节点定位\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=180
end angle=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 语句会导致:
\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}