He usado la interpolación de spline para suavizar una serie de tiempo y también me gustaría agregar una línea horizontal al diagrama. Pero parece que hay un problema que está fuera de mi alcance. Cualquier ayuda sería realmente útil. Esto es lo que tengo:
annual = np.arange(1,21,1)
l = np.array(value_list) # a list with 20 values
spl = UnivariateSpline(annual,l)
xs = np.linspace(1,21,200)
plt.plot(xs,spl(xs),'b')
plt.plot([0,len(xs)],[40,40],'r--',lw=2)
pylab.ylim([0,200])
plt.show()
El problema parece estar con mi uso de [0,len(xs)]para el trazado de líneas horizontales.
python
matplotlib
Ibe
fuente
fuente

Estás buscando
axhline(una línea de eje horizontal). Por ejemplo, lo siguiente le dará una línea horizontal eny = 0.5:fuente
axhline.Si desea dibujar una línea horizontal en los ejes, también puede probar el
ax.hlines()método. Es necesario especificaryla posición yxminyxmaxen los datos de coordenadas (es decir, los datos reales varían en el eje x). Un fragmento de código de muestra es:El fragmento de arriba trazará una línea horizontal en los ejes en
y=0.2. La línea horizontal comienza enx=4y termina enx=20. La imagen generada es:fuente
axhlinecuando necesita un rango x específico de la línea que pretendía dibujar. ¿Cuál es la diferencia entre 'axhline' y 'hlines'?axhline, losxminyxmaxestán en términos de coordenadas de ejes para que estén en el rango [0, 1]. Puede ver aquí una diferencia entre los diferentes sistemas de coordenadas.xminy laxmaxdiferencia es la única diferencia entreaxhlineyhlines, ¿no es el último el que domina al primero?Uso
matplotlib.pyplot.hlines:yse puede pasar como una ubicación única:y=40yse puede pasar como múltiples ubicaciones:y=[39, 40, 41]fig, ax = plt.subplots(), entonces reemplazaplt.hlinesoplt.axhlineconax.hlinesoax.axhline, respectivamente.matplotlib.pyplot.axhlinesolo puede trazar una sola ubicación (por ejemploy=40)fuente
Además de la respuesta más votada aquí, también se puede encadenar
axhlinedespués de llamarplota unpandas'sDataFrame.fuente
Una manera agradable y fácil para aquellas personas que siempre olvidan el comando
axhlinees la siguienteEn tu caso
xs = xyy = 40. Si len (x) es grande, entonces esto se vuelve ineficiente y realmente debería usarloaxhline.fuente
Puedes usar
plt.gridpara dibujar una línea horizontal.fuente