更改 tikzpicture 中轴标记的符号

更改 tikzpicture 中轴标记的符号

我有以下 MWE 来生成函数图,该函数定义为. 为此,我希望-轴标记应为正数而不是负数(即,显示范围为 0 到 10,而不是 0 到 -10)。我知道我将函数定义为负数,但图形在渲染时应该是这样的。

有没有办法定义轴标记为正?否则,如果有办法将函数定义为正,并旋转轴以实现相同的外观,那也可能是可以接受的。

\documentclass[letterpage,12pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{figure}
    \begin{center}
        \begin{tikzpicture}
            \begin{axis}[%
                width=0.5\textwidth,
                height=3in,
                xmin=0, xmax=140,
                ymin=-10, ymax=0,
                xlabel={Pressure $q_x$ [psf]},
                ylabel={Depth $z$ [ft]},
                every axis plot/.append style={ultra thick}
                ]
                \addplot[
                    smooth,
                    color=black,
                    variable=\y,
                    domain=-10:0,
                    samples=41
                ]
                plot ({-1000*\y/3.1415*(3*3^2+\y^2)*(3^2+\y^2)^-2},{\y});
                \addlegendentry{$q_x$}
            \end{axis}
        \end{tikzpicture}
    \end{center}
    \caption{Lateral Stress Contour}
\end{figure}

\end{document}

阴谋

答案1

人们总是可以对标签使用一些技巧。在这种情况下,你可能想要这样做

\documentclass[letterpage,12pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{figure}
    \begin{center}
        \begin{tikzpicture}
            \begin{axis}[%
                width=0.5\textwidth,
                height=3in,
                xmin=0, xmax=140,
                ymin=-10, ymax=0,
                xlabel={Pressure $q_x$ [psf]},
                ylabel={Depth $z$ [ft]},
                every axis plot/.append style={ultra thick},
                yticklabel=\pgfmathparse{abs(\tick)}\pgfmathprintnumber{\pgfmathresult}
                ]
                \addplot[
                    smooth,
                    color=black,
                    variable=\y,
                    domain=-10:0,
                    samples=41
                ]
                plot ({-1000*\y/3.1415*(3*3^2+\y^2)*(3^2+\y^2)^-2},{\y});
                \addlegendentry{$q_x$}
            \end{axis}
        \end{tikzpicture}
    \end{center}
    \caption{Lateral Stress Contour}
\end{figure}
\end{document}

在此处输入图片描述

当然,这只是一种诡计,不要将其与 pgfplots 手册第 4.21 节中描述的“绝对”坐标变换相混淆。如果您想进一步了解我上面提出的内容,您可能会对手册第 340 页上的示例感兴趣。

答案2

除了更改之外,yticklabels您还可以在函数中使用“反转 y 轴” -y。有关详细信息,请查看代码中的注释。

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \pgfplotsset{compat=1.3}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[%
        width=0.5\textwidth,
        height=3in,
        xmin=0,
        xmax=140,
        ymin=0,             % <-- changed
        ymax=10,            % <-- changed
        xlabel={Pressure $q_x$ [psf]},
        ylabel={Depth $z$ [ft]},
        every axis plot/.append style={ultra thick},
        y dir=reverse,      % <-- added
    ]
        \addplot[
            smooth,
            color=black,
            variable=\y,
            domain=-10:0,
            samples=41
        ] (
            -1000 * \y / 3.1415 * (3*3^2 + \y^2) * (3^2 + \y^2)^-2,
            -\y             % <-- added minus sign
        );
        \addlegendentry{$q_x$}
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容