¿Cómo lees un array en un gráfico matplotlib?

Así que he cargado un conjunto de datos de valores x y y de un archivo txt

dataset = np.loadtxt("data")

hay unos 100 puntos allí

cuando intenté usar

plt.scatter(dataset[0], dataset[1], marker='+', s=500, c='b')

Tengo dos puntos que no correlacionan con ningún valor x y y, estoy usando [0] [1] porque esos deben ser los valores x y y correctos?

tener en cuenta cuando imprima el conjunto de datos obtengo los siguientes

[[ 1 , 2], 
[ 2, 3], 
[ 4, 5]]

que no son todos ellos, pero tienes la idea de que tengo una serie de arrays así que cuando escriba dataset[0] o dataset[1] ¿Estoy realmente tomando un array y matplotlib está tratando de interpretar dos arrays en un punto?

Pic de la trama de dispersión que obtengo:

Pic of the scatter plot I get

Pregunta hecha hace 3 años, 4 meses, 28 días - Por syntaxsensei


3 Respuestas:

  • No puedo ayudarte con tu problema sin más información. Sin embargo, si sus datos son realmente Nx2 y desea trazar N pares de puntos que haría esto.

    El dataset[:,0] porción obtendrá la primera columna y utilizar esos valores para x, dataset [:,1] obtendrá la segunda columna y utilizar los para y

    dataset = np.array([[ 1 , 2], [ 2, 3], [ 4, 5]])
    Out: 
    array([[1, 2],
           [2, 3],
           [4, 5]])
    
    plt.scatter(dataset[:,0], dataset[:,1], marker='+', s=500, c='b')
    

    enter image description here

    Respondida el Dec 18, 2020 a las 02:27 - por csscraftsman

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás teniendo es que al intentar hacer el gráfico de dispersión con plt.scatter(dataset[0], dataset[1], marker='+', s=500, c='b'), estás pasando solo un punto en cada eje (x, y) en lugar de pasar todos los puntos del dataset.

    Para leer un array en un gráfico de matplotlib, necesitas pasar todos los puntos del array en lugar de solo el primero y el segundo. Puedes hacerlo de la siguiente manera:

    python
    import numpy as np
    import matplotlib.pyplot as plt
    
    dataset = np.loadtxt("data")
    x_values = dataset[:, 0]  

    Todos los valores de la primera columna

    y_values = dataset[:, 1]

    Todos los valores de la segunda columna

    plt.scatter(x_values, y_values, marker='+', s=500, c='b') plt.show()

    En este código, dataset[:, 0] significa que estás seleccionando todas las filas de la primera columna (valores x), y dataset[:, 1] significa que estás seleccionando todas las filas de la segunda columna (valores y). De esta forma, pasarás todos los puntos a la función plt.scatter y obtendrás un gráfico de dispersión apropiado con todos los puntos del dataset.

    Espero que esto resuelva tu problema. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 19, 2020 a las 02:24 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Sí, estás intentando leer incorrectamente los datos de tu array en el gráfico matplotlib.

    Cuando cargas el conjunto de datos usando np.loadtxt, los datos se cargan como un array bidimensional, donde cada fila representa un punto de datos y cada columna representa una característica (por ejemplo, x e y).

    En tu caso, el conjunto de datos tiene dos columnas y cada fila representa un punto de datos con valores de x e y. Por lo tanto, para obtener los valores de x e y, debes acceder a las columnas individuales del array.

    Aquí tienes el código corregido:

    python
    import numpy as np
    import matplotlib.pyplot as plt
    
    

    Carga el conjunto de datos

    dataset = np.loadtxt("data")

    Separa los valores de x e y

    x = dataset[:, 0] y = dataset[:, 1]

    Crea el gráfico de dispersión

    plt.scatter(x, y, marker='+', s=500, c='b') plt.show()

    En este código, utilizamos dataset[:, 0] para obtener los valores de x (primera columna) y dataset[:, 1] para obtener los valores de y (segunda columna).

    Respondida el Dec 19, 2020 a las 02:34 - por Gemini

    Votos positivos: 0 | Votos negativos: 0