xtick/ytick 和 \draw 所用比例不一致

xtick/ytick 和 \draw 所用比例不一致

我想在带有 pgfplot 的 tikzpicture 内绘制一个 x 半径为 2、y 半径为 1 的省略号。这是我的尝试:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{center}
\begin{tikzpicture}
  \begin{axis}[ %inner axis line style={-latex},
                axis x line=center,
                axis y line=center,
                unit vector ratio*=1 1 1,
                xmin=-1.6,
                xmax=3.2,
                ymin=-0.5,
                ymax=3.3,
                xtick={-1,0,1,2,3},
                ytick={1,2,3,4,5,6,7} ]
    \draw[black,thick]      (axis cs:1,2) ellipse [ x radius=2cm, y radius=1cm];
    \draw[fill,black,thick] (axis cs:1,2) circle  [ radius=0.02cm];
    \draw[dotted,thin] (axis cs:1,0) -- (axis cs:1,2) -- (axis cs:0,2);
    \end{axis}
\end{tikzpicture}
\end{center}

\end{document}

然而,结果并不是我想要的:查看省略号,我们可以看到半径不是 2 和 1:

在此处输入图片描述

看起来xtickytick轴上使用的比例与椭圆中使用的比例不同。我能以某种方式强制它们相同吗?

答案1

在 中axis,环境正在缩放xy向量以生成图,因此如果您删除cm上的规范x radiusy radius您将得到所需的结果:

在此处输入图片描述

笔记:

  • 您还需要通过至少指定版本 1.5.1 \pgfplotsset{compat=1.5.1}

代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\begin{center}
\begin{tikzpicture}
  \begin{axis}[ %inner axis line style={-latex},
                axis x line=center,
                axis y line=center,
                unit vector ratio*=1 1 1,
                xmin=-1.6,
                xmax=3.2,
                ymin=-0.5,
                ymax=3.3,
                xtick={-1,0,1,2,3},
                ytick={1,2,3,4,5,6,7} ]
    \draw[blue, ultra thick]      (axis cs:1,2) ellipse [x radius=2, y radius=1];
    \draw[fill,red,thick] (axis cs:1,2) circle  [ radius=0.02];
    \draw[dotted,thin, gray] (axis cs:1,0) -- (axis cs:1,2) -- (axis cs:0,2);
    \end{axis}
\end{tikzpicture}
\end{center}

\end{document}

答案2

PSTricks 解决方案:

\documentclass{article}

\usepackage{pst-plot}

\begin{document}

\begin{pspicture}(-1.5,-0.6)(3.85,3.9)
  \pnode(1,2){C}
  \psaxes{->}(0,0)(-1.5,-0.6)(3.5,3.5)[$x$,0][$y$,90]
  \psellipse(C)(2,1)
  \psdot(C)
  \psline[linestyle = dotted](0,2)(C)(1,0)
\end{pspicture}

\end{document}

输出

相关内容