Haz un diagrama de violín en Python usando Matplotlib

Matplotlib es una biblioteca de gráficos para crear visualizaciones estáticas, animadas e interactivas en Python. Matplotlib se puede usar en scripts de Python, el shell de Python e IPython, servidores de aplicaciones web y varios kits de herramientas de interfaz gráfica de usuario como Tkinter, awxPython, etc.

Nota: Para obtener más información, consulte Python Matplotlib: descripción general

¿Qué significa una trama de violín?

Los diagramas de violín son una combinación de diagramas de caja e histogramas . Representa la distribución, la mediana y el rango intercuartílico de los datos. Entonces vemos que iqr y la mediana son la información estadística proporcionada por el diagrama de caja, mientras que el histograma proporciona la distribución.

Trama de violín
Violin Plot

  • El punto blanco se refiere a la mediana.
  • Los puntos finales de la línea en negrita representan iqr1 e iqr3.
  • Los puntos finales de la línea delgada representan el mínimo y el máximo de forma similar al diagrama de caja.
  • La distribución por encima de 1,5x intercuartil (puntos finales mínimos y máximos de la línea delgada) denota la presencia de valores atípicos.

Sintaxis: violinplot(conjunto de datos, posiciones=Ninguno, vert=Verdadero, anchos=0.5, showmeans=False, showextrema=True, showmedians=False, quantiles=Ninguno, puntos=100,
bw_method=Ninguno, *, data=Ninguno)

Parámetros:
dataset: Array o secuencia de vectores.
Los datos de entrada.

posiciones: tipo array, predeterminado = [1, 2, …, n].
Establece las posiciones de los violines. Los ticks y los límites se establecen automáticamente para que coincidan con las posiciones.

vert: booleano, por defecto = Verdadero.
Si es verdadero, crea un diagrama de violín vertical. De lo contrario, crea un diagrama de violín horizontal.

anchos: tipo array, predeterminado = 0.5
Un escalar o un vector que establece el ancho máximo de cada violín. El valor predeterminado es 0,5, que utiliza aproximadamente la mitad del espacio horizontal disponible.

showmeans: bool, default = False
Si es True, alternará la representación de los medios.

showextrema: bool, default = True
Si es True, alternará la representación de los extremos.

showmedians: bool, default = False
Si es True, alternará la representación de las medianas.

cuantiles: tipo array, predeterminado = Ninguno
Si no es Ninguno, establezca una lista de flotantes en el intervalo [0, 1] para cada violín, que representa los cuantiles que se representarán para ese violín.

puntos: escalar, predeterminado = 100
Define el número de puntos para evaluar cada una de las estimaciones de densidad del núcleo gaussiano.

bw_method: str, escalar o callable, opcional
El método utilizado para calcular el ancho de banda del estimador. Puede ser ‘scott’, ‘silverman’, una constante escalar o un invocable. Si es un escalar, se usará directamente como kde.factor. Si es invocable, debe tomar una instancia de GaussianKDE como su único parámetro y devolver un escalar. Si Ninguno (predeterminado), se utiliza ‘scott’.

Ejemplo 1:

import numpy as np
import matplotlib.pyplot as plt
  
# creating a list of 
# uniformly distributed values
uniform = np.arange(-100, 100)
  
# creating a list of normally
# distributed values
normal = np.random.normal(size = 100)*30
  
# creating figure and axes to
# plot the image
fig, (ax1, ax2) = plt.subplots(nrows = 1, 
                               ncols = 2,
                               figsize =(9, 4),
                               sharey = True)
  
# plotting violin plot for
# uniform distribution
ax1.set_title('Uniform Distribution')
ax1.set_ylabel('Observed values')
ax1.violinplot(uniform)
  
  
# plotting violin plot for 
# normal distribution
ax2.set_title('Normal Distribution')
ax2.violinplot(normal)
  
# Function to show the plot
plt.show()

Producción:

Output image

Ejemplo 2: Múltiples parcelas de violín

import numpy as np
import matplotlib.pyplot as plt
from random import randint
  
# Creating 3 empty lists
l1 = []
l2 =[]
l3 =[]
  
# Filling the lists with random value
for i in range(100):
    n = randint(1, 100)
    l1.append(n)
      
for i in range(100):
    n = randint(1, 100)
    l2.append(n)
      
for i in range(100):
    n = randint(1, 100)
    l3.append(n)
  
random_collection = [l1, l2, l3]
  
# Create a figure instance
fig = plt.figure()
  
# Create an axes instance
ax = fig.gca()
  
# Create the violinplot
violinplot = ax.violinplot(random_collection)
plt.show()

Producción:
Output for multiple violin plot

Publicación traducida automáticamente

Artículo escrito por keshavramaiah1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *