syrte
11/11/2016 - 2:40 AM

density_scatter.py

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde

def denscatter(x, y, xsacle=1, yscale=1, sort=False, **kwargs):
  kwargs.setdefault('edgecolor', 'none')
  if xscale != 1:
    x = x / xscale
  if yscale != 1:
    y = y / yscale
  
  xy = np.vstack([x, y])
  z = gaussian_kde(xy)(xy)
  z = z / (xscale * yscale)
    
  if sort:
    idx = z.argsort()
    x, y, z = x[idx], y[idx], z[idx]
    
  return plt.scatter(x, y, c=z, **kwargs)