Я хочу нарисовать круг с радиусом, указанным в координатах данных. Но я не понимаю этого. Вот круг с радиусом "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
громко жалуется с предупреждением... Которое никто никогда не читает ;-)