pgfplots 是否支持“空间”绘图?

pgfplots 是否支持“空间”绘图?

正如标题所述,我想知道我是否可以使用 pgfplots 绘制“空间”。我想我必须解释一下我的意思(我找不到一个好的英文表达):

在 pgfplots 3d 图中,轴标签仅朝一个方向旋转。示例(取自 sourceforge.net 上的 pgfplots 项目页面):

在此处输入图片描述

相比之下,我希望看到的是这个用 Origin 完成的例子(取自OriginLab 网站):

在此处输入图片描述

所以问题是,我也可以使用 pgfplot 实现这一点吗?

答案1

slopedPgfplots 具有使用(或) 键的内置旋转轴描述slope like x axis

自定义变换可能可以添加“空间”标签。我正在考虑应用 x/y 倾斜变换内置旋转。

当然,这种转换取决于实际的视线方向(即 的选择view={<h>}{<v})。

对于标准视图方向,以下内容可能是一个有用的起点 - 或者实际上只是手动微调的起点。

\documentclass{standalone}

\usepackage{pgfplots}

\tikzset{
    % styles which are used in more than one place below:
    trafo x/.style={
        sloped like x axis,
        xslant=1,
    },
    trafo y/.style={
        sloped like y axis,
        xslant=-1,
        anchor=north,
    },
    trafo z/.style={
        %sloped like z axis,
        yslant=1,
        anchor=east,
    },
}
\pgfplotsset{
    spatial/.style={
        xlabel style={trafo x},
        xticklabel style={trafo x},
        ylabel style={trafo y},
        yticklabel style={trafo y},
            % z was more tricky. This is my current guess:
        every axis z label/.style={%
            at={(ticklabel cs:0.5)},rotate=-90,
            xslant=-1,
            anchor=north,
        },
        zticklabel style={trafo z},
    },
}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        min=0,
        max=1,
        xlabel=xlabel,
        ylabel=ylabel,
        zlabel=zlabel,
        spatial,
        ]
    \end{axis}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

显然,标签的位置可能需要一些修正,并且倾斜值只是猜测。

如果你想详细说明应该如何真的完成后,您可以自动计算给定两个轴的合适变换矩阵。例如,pgfplots 宏pgfplotstransformtoaxisdirection{<axis>}安装了一个 PGF 基本级别变换矩阵,该矩阵实现了该sloped功能(<axis>xy或之一z)。我相信可以实现类似的方法来支持看起来“足够好”的空间图。如果您想出一个通用的实现以及针对许多视图方向的测试,我可以将结果添加到 pgfplots。

相关内容