Skip to content

Instantly share code, notes, and snippets.

@endolith
Last active May 1, 2018 03:53
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save endolith/1035069 to your computer and use it in GitHub Desktop.
Save endolith/1035069 to your computer and use it in GitHub Desktop.
Multidimensional Kernel Density Estimation in SciPy
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 19 20:32:51 2011
@author: endolith@gmail.com
"""
import numpy as np
import scipy.stats as stats
from matplotlib.pyplot import imshow, scatter
# Create some dummy data
rvs = np.append(stats.norm.rvs(loc=2,scale=1,size=(200,1)),
stats.norm.rvs(loc=1,scale=3,size=(200,1)),
axis=1)
kde = stats.kde.gaussian_kde(rvs.T)
# Regular grid to evaluate kde upon
x_flat = np.r_[rvs[:,0].min():rvs[:,0].max():128j]
y_flat = np.r_[rvs[:,1].min():rvs[:,1].max():128j]
x,y = np.meshgrid(x_flat,y_flat)
grid_coords = np.append(x.reshape(-1,1),y.reshape(-1,1),axis=1)
z = kde(grid_coords.T)
z = z.reshape(128,128)
scatter(rvs[:,0],rvs[:,1],alpha=0.5,color='white')
imshow(z,aspect=x_flat.ptp()/y_flat.ptp(),origin='lower',extent=(rvs[:,0].min(),rvs[:,0].max(),rvs[:,1].min(),rvs[:,1].max()))
@markusritschel
Copy link

markusritschel commented Aug 8, 2016

You have to import scatter from matplotlib.pyplot additionally. Anyway, nice looking example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment