![为什么 pgfplots 使用左手坐标系,以及我该如何适应它?](https://linux22.com/image/340262/%E4%B8%BA%E4%BB%80%E4%B9%88%20pgfplots%20%E4%BD%BF%E7%94%A8%E5%B7%A6%E6%89%8B%E5%9D%90%E6%A0%87%E7%B3%BB%EF%BC%8C%E4%BB%A5%E5%8F%8A%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E9%80%82%E5%BA%94%E5%AE%83%EF%BC%9F.png)
我刚刚注意到pgfplots
使用左手坐标系以 3D 形式绘图时:
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest,compat/show suggested version=false}
\begin{document}
\begin{tikzpicture}[x=10cm,y=10cm]
%New Axis
\begin{axis}[
view = {-15}{-25},
axis lines = middle,
xtick = \empty, ytick = \empty, ztick = \empty,
xlabel = $x$, ylabel = $y$, zlabel = $z$,
declare function = {
xc(\t) = \t*cos(\t);
yc(\t) = \t*sin(\t);
zc(\t) = \t;
}]
%Create Conical Spiral
\addplot3[domain = 0:460, samples = 200, samples y = 0, mark = none]
( {xc(x)},{yc(x)},{zc(x)});
\def\param{420}
%Add Point
\addplot3[mark options = {color=black,scale=0.5},mark = *]
coordinates {({xc(\param)},{yc(\param)}, {zc(\param)})};
% Line to Point
\addplot3[dashed] coordinates {
({xc(\param)}, {0}, {0})
({xc(\param)}, {yc(\param)}, {0})
({xc(\param)}, {yc(\param)}, {zc(\param)})
};
% Line to Point
\addplot3[dashed] coordinates {
({0}, {yc(\param)}, {0})
({xc(\param)}, {yc(\param)}, {0})
(0,0,0)
};
\end{axis}
\end{tikzpicture}
\end{document}
在物理学和工程学中,我们通常使用右手坐标系。我知道最有效的解决方法是交换 和xlabel
。ylabel
不幸的是,这意味着我需要交换所有的 x 和 y 坐标,才能让所有东西都按照我想要的方式绘制,而有意识地输入(yc,xc,zc)
只会造成混乱。
为什么 pgfplots 会这样做?更重要的是,有没有一种创造性的方法可以解决这个问题,以便我可以使用右手坐标系输入值?
答案1
我无法回答“为什么”,但获得右手坐标系的最简单方法是添加
y post scale=-1
到axis
选项,本质上就是翻转 y 轴。