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)