Как я могу сделать график рассеяния, окрашенный по плотности - PullRequest
0 голосов
/ 09 января 2019

У меня есть два набора данных (скажем, x = ......book1.csv и y =.....book2.csv), состоящих из некоторых переменных, представляющих интерес. Я думал сделать график рассеяния плотности между x и y, где распределение точек представлено плотностью цвета. Как я могу это сделать?

Я прошел этот код раньше, но он не работал.

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interpn



def density_scatter( x , y, ax = None, sort = True, bins = 20, **kwargs )   :
    """
    Scatter plot colored by 2d histogram
    """
    if ax is None :
        fig , ax = plt.subplots()
    data , x_e, y_e = np.histogram2d( x, y, bins = bins)
    z = interpn( ( 0.5*(x_e[1:] + x_e[:-1]) , 0.5*(y_e[1:]+y_e[:-1]) ) , data , np.vstack([x,y]).T , method = "splinef2d", bounds_error = False )

    # Sort the points by density, so that the densest points are plotted last
    if sort :
        idx = z.argsort()
        x, y, z = x[idx], y[idx], z[idx]

    ax.scatter( x, y, c=z, **kwargs )
    return ax


if "__main__" == __name__ :

    x = np.random.normal(size=100000)
    y = x * 3 + np.random.normal(size=100000)
    density_scatter( x, y, bins = [30,30] )
...