我有以下 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}