visualización histograma graficas grafica datos con barras python matplotlib visualization data-visualization

graficas - ¿Cómo trazar un histograma usando Matplotlib en Python con una lista de datos?



histograma en python (3)

Esta es una forma muy práctica de hacerlo, pero si desea hacer un histograma donde ya conozca los valores bin pero no tiene los datos de origen, puede usar la función np.random.randint para generar el número correcto de valores dentro del rango de cada bin para la función hist para graficar, por ejemplo:

import numpy as np import matplotlib.pyplot as plt data = [np.random.randint(0, 9, *desired y value*), np.random.randint(10, 19, *desired y value*), etc..] plt.hist(data, histtype=''stepfilled'', bins=[0, 10, etc..])

En cuanto a las etiquetas, puede alinear x ticks con contenedores para obtener algo como esto:

#The following will align labels to the center of each bar with bin intervals of 10 plt.xticks([5, 15, etc.. ], [''Label 1'', ''Label 2'', etc.. ])

Estoy tratando de trazar un histograma usando la función matplotlib.hist() pero no estoy seguro de cómo hacerlo.

Tengo una lista

probability = [0.3602150537634409, 0.42028985507246375, 0.373117033603708, 0.36813186813186816, 0.32517482517482516, 0.4175257731958763, 0.41025641025641024, 0.39408866995073893, 0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327, 0.35398230088495575]

y una lista de nombres (cadenas).

¿Cómo hago la probabilidad como mi valor y de cada barra y los nombres como valores x?


Si aún no ha instalado matplotlib, simplemente pruebe el comando.

> pip install matplotlib

Importar biblioteca

import matplotlib.pyplot as plot

Los datos del histograma:

plot.hist(weightList,density=1, bins=20) plot.axis([50, 110, 0, 0.06]) #axis([xmin,xmax,ymin,ymax]) plot.xlabel(''Weight'') plot.ylabel(''Probability'')

Mostrar histograma

plot.show()

Y la salida es como:


Si desea un histograma, no necesita adjuntar ningún ''nombre'' a los valores de x, ya que en el eje x tendría contenedores:

import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.random.normal(size = 1000) plt.hist(x, normed=True, bins=30) plt.ylabel(''Probability'');

Sin embargo, si tiene un número limitado de puntos de datos y desea un diagrama de barras, puede adjuntar etiquetas al eje x:

x = np.arange(3) plt.bar(x, height= [1,2,3]) plt.xticks(x+.5, [''a'',''b'',''c''])

Avísame si esto resuelve tu problema.

EDITAR 26 de noviembre de 2018

Según el comentario a continuación, el siguiente código será suficiente a partir de Matplotlib 3.0.2:

x = np.arange(3) plt.bar(x, height= [1,2,3]) plt.xticks(x, [''a'',''b'',''c'']) # no need to add .5 anymore

EDITAR 23 de mayo de 2019

En lo que respecta al histograma, el parámetro normed está en desuso:

MatplotlibDeprecationWarning: El kwarg ''normalizado'' quedó en desuso en Matplotlib 2.1 y se eliminará en 3.1. Use ''densidad'' en su lugar.

Entonces, a partir de Matplolib 3.1 lugar de:

plt.hist(x, normed=True, bins=30)

uno tiene que escribir:

import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.random.normal(size = 1000) plt.hist(x, density=True, bins=30) # density plt.ylabel(''Probability'');