#!/usr/bin/env python # coding: utf-8 # In[1]: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import matplotlib.mlab as mlab import numpy as np import plotly.graph_objects as go def bivariate_normal(X, Y, sigmax=1.0, sigmay=1.0, mux=0.0, muy=0.0, sigmaxy=0.0): """ Bivariate Gaussian distribution for equal shape *X*, *Y*. See `bivariate normal `_ at mathworld. """ Xmu = X-mux Ymu = Y-muy rho = sigmaxy/(sigmax*sigmay) z = Xmu**2/sigmax**2 + Ymu**2/sigmay**2 - 2*rho*Xmu*Ymu/(sigmax*sigmay) denom = 2*np.pi*sigmax*sigmay*np.sqrt(1-rho**2) return np.exp(-z/(2*(1-rho**2))) / denom def P(X, Y): return bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) # generating data x = np.linspace(-2, 2, 60) y = np.linspace(-2, 2, 60) X, Y = np.meshgrid(x, y) Z = P(X, Y) # plot fig = go.Figure(data=[go.Surface(z=(0.15-Z))]) fig.update_layout(title='Mt Bruno Elevation', autosize=False, width=500, height=500, margin=dict(l=65, r=50, b=65, t=90)) fig.show()