我正在尝试pgfplots
通过绘制简单的东西(例如二维球体)来学习如何使用。但是,我发现相当令人惊讶的是,根据视角的不同,结果有时看起来根本不像球体。除非我遗漏了什么,否则无论我们从哪个方向看,球体都应该是相同的。
这是我的示例代码:
\documentclass[a4paper,landscape]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=6cm}
\newcommand{\degree}{\ensuremath{^\circ}}
\newcommand{\plotsphere}[2]{
\begin{axis}[view={#2}{#1},axis equal,title={$\theta=#1\degree,\quad \phi=#2\degree$}]
\addplot3[surf,shader=flat,z buffer=sort,
samples=20,domain=-1:1,y domain=0:2*pi]
({sqrt(1-x^2) * cos(deg(y))},
{sqrt( 1-x^2 ) * sin(deg(y))},
x);
\end{axis}
}
\begin{document}
\pagestyle{empty}
\begin{figure}
\begin{tikzpicture}[scale = 0.75]
\foreach \x/\polangle in {-8/20,0/45,8/70}
\foreach \y / \azangle in {-8/20,0/45,8/70}
\node at (\x,\y) {\plotsphere{\polangle}{\azangle}};
\end{tikzpicture}
\end{figure}
\end{document}
结果:
我唯一满意的版本是view={45}{45}
。所有其他版本都显得扭曲了。似乎这种扭曲不是由于我使用了 选项而导致的,因为轴上的长度单位不同axis equal
。我是不是忘记了什么重要的参数?
答案1
正如 Luigi 正确指出的那样,这是一个错误,已在 1.6 版本中修复。
因此,更新将解决您的问题。为了记录,请尝试查看下图中 axis equal
和之间的区别。axis equal image
无轴缩放
当然这里的缩放是错误的。
axis equal
选项
这里的缩放比例是正确的.它将缩放轴范围,以便保持指定的宽度和高度(即<axis>min
和<axis>max
受到缩放)。因此,你会看到它有趋势充满如果没有正确的间距,则会出现很多空白(请注意\theta=45
)。
axis equal image
选项
缩放也是正确的这里。然而,这里<axis>min
和<axis>max
不是缩放参数。相反,图像的宽度和高度与找到的长度相匹配<axis>min
。<axis>max
因此图像大小将不是即便已指定,也应予以保留。