Trataré de hacer un histograma 2D de la parcela, y obtener un «suave» de la imagen por una especie de interpolación. Por lo tanto tengo que hacer la siguiente combinación de plt.hist2d y plt.imshow

import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt("parametre_optMC.dat", skiprows=50, usecols=(1,2))

h, x, y, p = plt.hist2d(data[:,0], data[:,1], bins = 20)
plt.imshow(h, origin = "lower", interpolation = "gaussian")
plt.savefig("test.pdf")

Como puedes ver en la imagen de abajo, las dos parcelas se superponen y que es el problema de que necesito un poco de ayuda

Alisado 2D histograma con matplotlib y imshow

La adición de clf funciona, pero voy a perder ejes dimenions :

import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt("parametre_optMC.dat", skiprows=50, usecols=(1,2))

h, x, y, p = plt.hist2d(data[:,0], data[:,1], bins = 20)
plt.clf()
plt.imshow(h, origin = "lower", interpolation = "gaussian")
plt.savefig("test.pdf")

Alisado 2D histograma con matplotlib y imshow

Usted todavía puede tener datos de un complot en su figura. Si usted plt.clf() y plt.close() será borrado.
Ok, funciona pero me pierden los ejes dimensiones. Puedo editar el post.
No sólo se quiere ver el alisado de la imagen? No estoy seguro de cuál es la pregunta.
Sí, yo sólo quiero el alisado. Pero como se puede ver escala de ejes no son las mismas antes y después de imshow.
Trate de mirar las respuestas aquí: stackoverflow.com/q/18696122/1461850

OriginalEl autor Ger | 2014-05-27

3 Comentarios

  1. 7

    Tal vez sería mejor para trazar una estimación de densidad de kernel?

    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    
    data = np.random.multivariate_normal([0, 0], [(1, .6), (.6, 1)], 100)
    f, ax = plt.subplots(figsize=(7, 7))
    sns.kdeplot(data, shade=True, ax=ax)

    Alisado 2D histograma con matplotlib y imshow

    OriginalEl autor mwaskom

  2. 1

    A su primera pregunta:

    Usted necesita para borrar los datos de un anterior de la parcela, poniendo lo siguiente antes de la parcela debe hacer esto:

    plt.clf()
    plt.close()

    A su segunda pregunta:

    Para cambiar los valores del eje I sugeriría la extent parámetro (ver esta respuesta).

    por ejemplo, algo como:

    plt.imshow(h, origin = "lower", interpolation = "gaussian",extent=[-100,100,-75,75])

    OriginalEl autor atomh33ls

  3. 0

    Necesita agregar la ‘medida’ de parámetro para usted imshow comando. imshow acepta una cuadrícula de valores arbitrarios, pero no sabe las dimensiones.

    OriginalEl autor bejota

Dejar respuesta

Please enter your comment!
Please enter your name here