我一直在搜索网络和 pgfplots 手册,试图找到一个用不同的希腊字符标记不同 x 轴刻度的示例。我找到的最接近的方法是使用
xticklabel={$\pgfmathprintnumber{\tick}\sigma $},
xtick={-3,-2,-1,0,1,2,3},
我的情节完整代码如下
\pgfplotsset{width=7cm,compat=1.16}
\begin{center}
\begin{tikzpicture}[baseline]
\begin{axis}[
axis lines=left,
title={Standard Normal Distribution $Z\sim N\left ( 0,1 \right )$},
xlabel={$z$-score},
ylabel={Probability},
xticklabel={$\pgfmathprintnumber{\tick}\sigma $},
xtick={-3,-2,-1,0,1,2,3},
ytick={0,0.1,0.2,0.3,0.4},
ymax=0.5
]
\newcommand\MU{0}
\newcommand\SIGMA{1}
\addplot[
domain=-4*\SIGMA:4*\SIGMA,
samples=201,
]
{exp(-(x-\MU)^2 / 2 / \SIGMA^2) / (\SIGMA * sqrt(2*pi))};
\end{axis}
\end{tikzpicture}
\end{center}
但这里显然只是用值旁边的 sigma 修改每个 xtick。我想要的是让 xtick 读取 mu-3*sigma、mu-2*sigma、mu-sigma、mu 等等。
任何想法都将不胜感激。
答案1
欢迎来到 TeX.SE!类似这样的事?
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{width=12cm,compat=1.16}
\begin{center}
\begin{tikzpicture}[baseline]
\begin{axis}[
axis lines=left,
title={Standard Normal Distribution $Z\sim N\left ( 0,1 \right )$},
xlabel={$z$-score},
ylabel={Probability},
xticklabel={$\mu\pgfmathtruncatemacro{\mytick}{int(\tick)}
\ifnum\mytick=0
\else
\pgfmathparse{ifthenelse(\tick<0,"","+")}
\pgfmathresult\pgfmathprintnumber{\tick}\sigma\fi $},
xtick={-3,-2,-1,0,1,2,3},
ytick={0,0.1,0.2,0.3,0.4},
ymax=0.5
]
\newcommand\MU{0}
\newcommand\SIGMA{1}
\addplot[
domain=-4*\SIGMA:4*\SIGMA,
samples=201,
]
{exp(-(x-\MU)^2 / 2 / \SIGMA^2) / (\SIGMA * sqrt(2*pi))};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
我把图做得稍微宽一些,这样现在更宽的标签就不会重叠。或者,你可以旋转它们。