def kernel_density_geo(X_data, Y_data, bin_size_x=10, bin_size_y=10):
    """
    more information about the `Kernel density estimation <http://en.wikipedia.org/wiki/Kernel_density_estimation>`_
    """
    import scipy.stats as stats
    import numpy as N
    X_data = N.transpose([X_data.ravel()])
    Y_data = N.transpose([Y_data.ravel()])
    pos = N.append(X_data, Y_data, axis=1)
    kde = stats.kde.gaussian_kde(pos.T)
    X_flat = N.linspace(pos[:, (0)].min(), pos[:, (0)].max(), bin_size_x)
    Y_flat = N.linspace(pos[:, (1)].min(), pos[:, (1)].max(), bin_size_y)
    X, Y = N.meshgrid(X_flat, Y_flat)
    grid_coords = N.append(X.reshape(-1, 1), Y.reshape(-1, 1), axis=1)
    Z = kde(grid_coords.T)
    Z = Z.reshape(bin_size_x, bin_size_y)
    return grid_coords, Z
