axis
我怎样才能在上绘图pgfplots
?我已经发现,我必须axis cs:
在坐标前面使用 (这是什么cs
意思?),但以下示例不会绘制椭圆:
\begin{tikzpicture}
\begin{axis}
\draw (axis cs:0,0) ellipse (1cm,1cm);
\end{axis}
\end{tikzpicture}
我做错了什么?在轴图上绘图的一般方法是什么?
答案1
让我们分解一下:
路径运算符的“旧语法”ellipse
是ellipse (<x radius> and <y radius>)
。
但是,有一种更新更好的语法。我同意手册中的说法:
注意:对于圆 [和椭圆] 也存在一种较旧的语法,其中圆的半径在圆命令后紧接着的括号中给出,如
circle (1pt)
。虽然这种语法更简洁一些,但对于代码读者来说更难理解,并且使用括号表示坐标以外的内容是不明智的。— PGF 手册,第 14.7 节“圆和椭圆操作”,第 148 页
以下语法更具可读性:
\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
您还可以添加scale
选项rotate
或者在样式中使用它们every circle
……
但仍然没有椭圆的输出。:(
阅读第 4.16 节“自定义注释”,第 263 页及后续页面pgfplots
手动的我们可以找到几个使用路径运算符的示例,其中始终给出轴限值。如果环境不包含单个图,ellipse
则需要这些。axis
因此,这是可行的:
\begin{axis}%[xmin=-1,xmax=1,ymin=-1,ymax=1]
\addplot {x^2 - x + 4};
\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}
这不会:
\begin{axis}%[xmin=-1,xmax=1,ymin=-1,ymax=1]
\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}
但是这个:
\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1]
\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}
您还可以使用pgfplots
方向向量中给出的半径,这些半径会自动使用axis direction cs
(cs
代表坐标系,坐标系本身在 PGF 手册中有一整章)。为此,您至少需要设置 compat=1.5.1
。
只需省略尺寸单位并pgfplots
自动假设axis direction cs
:
\draw (axis cs:0,0) ellipse [x radius=2, y radius=.5];
代码
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1]
% \addplot {x^2 - x +4};
\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\draw (axis cs:0,0) ellipse [x radius=2, y radius=.5];
\end{axis}
\end{tikzpicture}
\end{document}