![在 Tikz 中绘制二元正态分布](https://linux22.com/image/308713/%E5%9C%A8%20Tikz%20%E4%B8%AD%E7%BB%98%E5%88%B6%E4%BA%8C%E5%85%83%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83.png)
我一直在尝试绘制某个二元正态分布的 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
:采样密度太低,无法绘制旋转笛卡尔坐标中的不对称分布。
选项包括:
- 如果无关紧要,则不要使用旋转分布。解决方案在在 TikZ 中绘制二元正态分布,在这种情况下它是重复的。
- 也许极坐标更适合(我没有尝试过)
- 增加采样密度
方法 (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}
我对您的代码做了一些明显的和不明显的更改,我想在这里讨论它们:
\centering
a 内部tikzpicture
没有效果。- 我添加
compat=1.12
并编译了图片lualatex
。这是很多compat
比任何旧级别或都快pdflatex
。 - 我修复了你的数学表达式中的一个语法错误:
)
缺少最后一个“ ”(导致lua backend
退出并回退到存在语法错误的缓慢的 TeX 实现)。 - 我使用过
shader=interp
,因为samples=150
与 一起使用时会导致太多网格线faceted
。