Как нарисовать окружность в pgfplots, используя координаты данных?

Как нарисовать окружность в pgfplots, используя координаты данных?

Я хочу нарисовать круг с радиусом, указанным в координатах данных. Но я не понимаю этого. Вот круг с радиусом "5", но его радиус в координатах данных, похоже, равен всего 0,05. Что я упускаю?

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
% pgfplots package manual at https://ctan.org/pkg/pgfplots?lang=en

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xmin=-0.7,xmax=0, xlabel={$x$}, xtick={-1,-0.9,...,0}, minor xtick={-1,-0.95,...,0}, 
    ymin=0.3,ymax=1.0, ylabel={$y$}, ytick={0, 0.1,...,1}, minor ytick={0, 0.05,...,1},
    samples=500,domain=-1:0,
    grid=both,
    title={\large shapes on axis}]
    
  \addplot[blue]({x}, {1-x*x} );
  \draw (axis cs:-0.4,0.5) circle [radius=5];
\end{axis}
\end{tikzpicture}
\end{document}

введите описание изображения здесь

решение1

Всегда следует устанавливать compatуровень при использовании PGFPlots. При установке нового значения, значение axis csпо умолчанию внутри axis, а радиус круга будет таким, как и ожидалось.

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xmin=-0.7,xmax=0, xlabel={$x$}, xtick={-1,-0.9,...,0}, minor xtick={-1,-0.95,...,0}, 
    ymin=0.3,ymax=1.0, ylabel={$y$}, ytick={0, 0.1,...,1}, minor ytick={0, 0.05,...,1},
    samples=500,domain=-1:0,
    grid=both,
    title={\large shapes on axis}]
  \addplot[blue]({x}, {1-x*x} );
  \draw (-0.4,0.5) circle [radius=0.05];
\end{axis}
\end{tikzpicture}
\end{document}

Участок с кругом

решение2

Это просто дополнительный ответ, чтобы подробнее объяснить поведение, указанное в (правильном) принятом ответе.

pgfplotsимеет очень хорошую структуру обратной совместимости — когда автор что-то меняет или даже исправляет какую-то ошибку, он делает это в рамках механизма «уровня совместимости».

Например, в самых первых версиях пакета было очень свободное позиционирование делений осей. Кристиан Фейерзенгер исправил это, но теперь возникла проблема: все чертежи, уже сделанные в старых документах, менялись, создавая мучительную неожиданную работу для авторов. Поэтому новое поведение, даже если оно, возможно, правильное, должно быть включено вручную, с, в данном случае compat=1.3- что говорит о том, что вам не нужна совместимость с версиями, более ранними, чем эта.

В версии 1.11 система координат по умолчанию в среде осей была изменена таким образом, что системы координат для addplotи drawстали одинаковыми; раньше (как вы видели) они были разными (подробности в очень подробном руководстве).

Наконец, если вы не используете уровень совместимости, pgfplotsгромко жалуется с предупреждением... Которое никто никогда не читает ;-)

Связанный контент