para matrices marcadores librerias hacer graficos grafico graficar dispersion coordenadas como barras python matplotlib figure

python - matrices - matplotlib



Indicando la diferencia estadísticamente significativa en el gráfico de barras (1)

Uso un gráfico de barras para indicar los datos de cada grupo. Algunas de estas barras difieren significativamente entre sí. ¿Cómo puedo indicar la diferencia significativa en el diagrama de barras?

import numpy as np import matplotlib.pyplot as plt menMeans = (5, 15, 30, 40) menStd = (2, 3, 4, 5) ind = np.arange(4) # the x locations for the groups width=0.35 p1 = plt.bar(ind, menMeans, width=width, color=''r'', yerr=menStd) plt.xticks(ind+width/2., (''A'', ''B'', ''C'', ''D'') )

Estoy apuntando a


He hecho un par de cosas aquí que sugiero cuando se trabaja con tramas complejas. Extraiga el formato personalizado en un diccionario, simplifica la vida cuando desea cambiar un parámetro, y puede pasar este diccionario a múltiples trazados. También escribí una función personalizada para hacer annotate los videos, como una bonificación que puede anotar entre (A,C) si realmente quieres (estoy de acuerdo con mi comentario de que este no es el enfoque visual correcto, sin embargo). Es posible que necesite algunos ajustes una vez que los datos cambian, pero esto debería ponerlo en el camino correcto.

import numpy as np import matplotlib.pyplot as plt menMeans = (5, 15, 30, 40) menStd = (2, 3, 4, 5) ind = np.arange(4) # the x locations for the groups width= 0.7 labels = (''A'', ''B'', ''C'', ''D'') # Pull the formatting out here bar_kwargs = {''width'':width,''color'':''y'',''linewidth'':2,''zorder'':5} err_kwargs = {''zorder'':0,''fmt'':None,''lw'':2,''ecolor'':''k''} X = ind+width/2 fig, ax = plt.subplots() ax.p1 = plt.bar(ind, menMeans, **bar_kwargs) ax.errs = plt.errorbar(X, menMeans, yerr=menStd, **err_kwargs) # Custom function to draw the diff bars def label_diff(i,j,text,X,Y): x = (X[i]+X[j])/2 y = 1.1*max(Y[i], Y[j]) dx = abs(X[i]-X[j]) props = {''connectionstyle'':''bar'',''arrowstyle'':''-'',/ ''shrinkA'':20,''shrinkB'':20,''lw'':2} ax.annotate(text, xy=(X[i],y+7), zorder=10) ax.annotate('''', xy=(X[i],y), xytext=(X[j],y), arrowprops=props) # Call the function label_diff(0,1,''p=0.0370'',X,menMeans) label_diff(1,2,''p<0.0001'',X,menMeans) label_diff(2,3,''p=0.0025'',X,menMeans) plt.ylim(ymax=60) plt.xticks(X, labels, color=''k'') plt.show()