Matplotlib boxplot utilizando estadísticas precalculadas (resumen)

Necesito hacer un diagtwig de caja (en Python y matplotlib) pero no tengo los datos “en bruto” originales. Lo que tengo son valores precalculados para max, min, media, mediana e IQR (distribución normal) pero aún así me gustaría hacer un diagtwig de caja. Por supuesto, no es posible trazar valores atípicos, pero además de eso, supongo que toda la información está ahí.

He buscado por todas partes para encontrar una respuesta sin éxito. Lo más cerca que he llegado es la misma pregunta, pero para R (con la que no estoy familiarizado). Consulte ¿Es posible trazar fácilmente un diagtwig de caja a partir de estadísticas calculadas previamente (en R?)

¿Alguien me puede mostrar cómo hacer el diagtwig de caja?

¡Muchas gracias!

En las versiones anteriores, tienes que hacerlo manualmente cambiando los elementos del diagtwig de caja individualmente:

Mean=[3.4] #mean IQR=[3.0,3.9] #inter quantile range CL=[2.0,5.0] #confidence limit A=np.random.random(50) D=plt.boxplot(A) # a simple case with just one variable to boxplot D['medians'][0].set_ydata(Mean) D['boxes'][0]._xy[[0,1,4], 1]=IQR[0] D['boxes'][0]._xy[[2,3],1]=IQR[1] D['whiskers'][0].set_ydata(np.array([IQR[0], CL[0]])) D['whiskers'][1].set_ydata(np.array([IQR[1], CL[1]])) D['caps'][0].set_ydata(np.array([CL[0], CL[0]])) D['caps'][1].set_ydata(np.array([CL[1], CL[1]])) _=plt.ylim(np.array(CL)+[-0.1*np.ptp(CL), 0.1*np.ptp(CL)]) #reset the limit 

introduzca la descripción de la imagen aquí

Gracias al comentario de @tacaswell pude encontrar la documentación requerida y dar un ejemplo usando Matplotlib 1.4.3. Sin embargo, este ejemplo no escala automáticamente la figura al tamaño correcto.

 import matplotlib.pyplot as plt item = {} item["label"] = 'box' # not required item["mean"] = 5 # not required item["med"] = 5.5 item["q1"] = 3.5 item["q3"] = 7.5 #item["cilo"] = 5.3 # not required #item["cihi"] = 5.7 # not required item["whislo"] = 2.0 # required item["whishi"] = 8.0 # required item["fliers"] = [] # required if showfliers=True stats = [item] fig, axes = plt.subplots(1, 1) axes.bxp(stats) axes.set_title('Default') y_axis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] y_values = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] plt.yticks(y_axis, y_values) 

Enlaces relevantes a la documentación:

  • Función Axes.bxp ()
  • estructura de datos boxplot_stats
  • otros ejemplos usando Axes.bxp