Pregunta haciendo barras de errores no recortadas en matplotlib con Python


Estoy usando matplotlib en Python para trazar una línea con barras de error de la siguiente manera:

plt.errorbar(xvalues, up_densities, yerr=ctl_sds, fmt='-^', lw=1.2, markersize=markersize,
         markeredgecolor=up_color, color=up_color, label="My label", clip_on=False)
plt.xticks(xvalues)

Puse las marcas en el eje x usando "xticks". Sin embargo, las barras de error del último punto en xvalues ​​(es decir, xvalues ​​[-1]) están recortadas a la derecha, lo que significa que solo aparece la mitad de una barra de error. Esto es cierto incluso con la opción clip_on = False. ¿Cómo puedo solucionar esto, de modo que las barras de error aparecen en su totalidad, a pesar de que su lado derecho está técnicamente fuera de los valores x [-1]?

Gracias.


5
2018-05-15 23:49


origen


Respuestas:


En matplotlib, la mayoría del control detallado debe hacerse a través de los Artistas. Creo que esto debería hacer lo que quieras:

import matplotlib.pyplot as plt
from random import uniform as r

x = range(10)
e = plt.errorbar(x, [r(2,10) for i in x], [r(.1,1) for i in x], capsize=8, color='r')

for b in e[1]:
    b.set_clip_on(False)

plt.show()

enter image description here

El problema que estabas teniendo es que clip_on la palabra clave se estaba utilizando para controlar los marcadores y no las barras de error. Para controlar las barras de error, plt.errorbar devuelve una tupla, donde el segundo elemento es una lista de barras de errores. Así que aquí voy a través de la lista y desactivo el recorte para cada barra de errores.


11
2018-05-18 04:39



¿Es esto lo que quieres decir? ¿Quieres redefinir los límites horizontales de tu parcela?

plt.errorbar(range(5), [3,2,4,5,1], yerr=[0.1,0.2,0.3,0.4,0.5])
ax = plt.gca()
ax.set_xlim([-0.5,4.5])

Matplotlib errorbar http://up.stevetjoa.com/errorbar.png


1
2018-05-16 13:44



Preguntas populares