【问题标题】:Visualizing a multivariate normal distribution in 3D with python使用 python 在 3D 中可视化多元正态分布
【发布时间】:2020-04-18 15:42:01
【问题描述】:

有谁知道如何对多变量(简单来说是双变量)正态分布的 PDF 进行漂亮的可视化,并预测每个变量的分布,如下图所示?提前致谢。

图源: 来自this thesis

【问题讨论】:

    标签: python visualization normal-distribution


    【解决方案1】:

    这个情节几乎肯定是使用matplotlib 制作的。看看他们的tutorials。 Stack Overflow 也有一个matplotlib tag

    要在 3D 中绘图,您需要使用 mplot3d 工具包。

    【讨论】:

      【解决方案2】:

      试试这个脚本

      from mpl_toolkits.mplot3d import axes3d
      import matplotlib.pyplot as plt
      from matplotlib import cm
      import numpy as np
      
      def gauss1(x):
          return np.exp(-(x**2))
      
      def gauss(x, y):
          return gauss1(x)*gauss1(2*y)
      
      fig = plt.figure()
      ax = fig.gca(projection='3d')
      x = np.linspace(-3, 3, 100)
      y = np.linspace(-3, 3, 100)
      X, Y = np.meshgrid(x, y)
      Z = gauss(X, Y)
      
      ax.plot_surface(X, Y, Z, rstride=2, cstride=2, alpha=0.4, cmap=cm.coolwarm)
      cset = ax.contourf(X, Y, Z, zdir='x', offset=-4, cmap=cm.coolwarm)
      cset = ax.contourf(X, Y, Z, zdir='y', offset=4, cmap=cm.coolwarm)
      
      ax.set_xlabel('X')
      ax.set_ylabel('Y')
      ax.set_zlabel('Z')
      
      plt.show()
      

      这会产生以下结果

      我不确定如何仅绘制投影的等高线,但这应该可以帮助您入门。

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 2018-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        • 2019-09-25
        • 2020-09-25
        • 2015-03-05
        相关资源
        最近更新 更多