在 Tikz 中绘制二元正态分布

在 Tikz 中绘制二元正态分布

我一直在尝试绘制某个二元正态分布的 3D 图,但目前还不够理想。我一直使用的代码是

\begin{tikzpicture}
\centering
\begin{axis}[
width=6in,
height=4in,
title=Bivariate Normal Distribution,
axis lines=left,
grid=both,
]
\addplot3[samples=50,surf,faceted color=blue]
{1/(2 *pi* sqrt(1-0.9^2))* exp(-(x^2+y^2-2*0.9*x*y)/(2*(1-0.9^2))};
\end{axis}
\end{tikzpicture}

从而产生了这个

在此处输入图片描述

但这不是我想要的,我调整不同的图形参数并\addplot3不能带来更赏心悦目的效果。理想情况下,我想要制作的表面是这样的

在此处输入图片描述

我真的不介意形状,我可以毫无问题地改变它,我遇到麻烦的是图形。你能告诉我需要更改哪些参数才能获得如上图所示的效果吗?

谢谢。

答案1

第三方工具的图像与此之间的主要区别pgfplots在于,你有一个相当复杂的例子pgfplots:采样密度太低,无法绘制旋转笛卡尔坐标中的不对称分布。

选项包括:

  1. 如果无关紧要,则不要使用旋转分布。解决方案在在 TikZ 中绘制二元正态分布,在这种情况下它是重复的。
  2. 也许极坐标更适合(我没有尝试过)
  3. 增加采样密度

方法 (3) 的结果如下:

\documentclass{standalone}

\usepackage{pgfplots}

\pgfplotsset{compat=1.12}


\begin{document}

\begin{tikzpicture}
\begin{axis}[
width=6in,
height=4in,
title=Bivariate Normal Distribution,
axis lines=left,
grid=both,
]
\addplot3[samples=150,surf,shader=interp]
{1/(2 *pi* sqrt(1-0.9^2))* exp(-(x^2+y^2-2*0.9*x*y)/(2*(1-0.9^2)))};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我对您的代码做了一些明显的和不明显的更改,我想在这里讨论它们:

  1. \centeringa 内部tikzpicture没有效果。
  2. 我添加compat=1.12并编译了图片lualatex。这是很多compat比任何旧级别或都快pdflatex
  3. 我修复了你的数学表达式中的一个语法错误:)缺少最后一个“ ”(导致lua backend退出并回退到存在语法错误的缓慢的 TeX 实现)。
  4. 我使用过shader=interp,因为samples=150与 一起使用时会导致太多网格线faceted

相关内容