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 especificary
la posición yxmin
yxmax
en 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=4
y termina enx=20
. La imagen generada es:fuente
axhline
cuando necesita un rango x específico de la línea que pretendía dibujar. ¿Cuál es la diferencia entre 'axhline' y 'hlines'?axhline
, losxmin
yxmax
está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.xmin
y laxmax
diferencia es la única diferencia entreaxhline
yhlines
, ¿no es el último el que domina al primero?Uso
matplotlib.pyplot.hlines
:y
se puede pasar como una ubicación única:y=40
y
se puede pasar como múltiples ubicaciones:y=[39, 40, 41]
fig, ax = plt.subplots()
, entonces reemplazaplt.hlines
oplt.axhline
conax.hlines
oax.axhline
, respectivamente.matplotlib.pyplot.axhline
solo puede trazar una sola ubicación (por ejemploy=40
)fuente
Además de la respuesta más votada aquí, también se puede encadenar
axhline
después de llamarplot
a unpandas
'sDataFrame
.fuente
Una manera agradable y fácil para aquellas personas que siempre olvidan el comando
axhline
es la siguienteEn tu caso
xs = x
yy = 40
. Si len (x) es grande, entonces esto se vuelve ineficiente y realmente debería usarloaxhline
.fuente
Puedes usar
plt.grid
para dibujar una línea horizontal.fuente