Usei a interpolação de spline para suavizar uma série temporal e também gostaria de adicionar uma linha horizontal ao gráfico. Mas parece haver um problema que está fora do meu alcance. Qualquer ajuda seria realmente útil. Aqui está o que eu tenho:
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()
O problema parece estar no meu uso [0,len(xs)]
para plotagem de linhas horizontais.
python
matplotlib
Ibe
fonte
fonte
Você está procurando
axhline
(uma linha de eixo horizontal). Por exemplo, o seguinte fornecerá uma linha horizontal emy = 0.5
:fonte
axhline
.Se você quiser desenhar uma linha horizontal nos eixos, tente também o
ax.hlines()
método É necessário especificary
a posição exmin
exmax
nos dados de coordenadas (ou seja, seus dados reais variam no eixo-x). Um trecho de código de exemplo é:O trecho acima traçará uma linha horizontal nos eixos em
y=0.2
. A linha horizontal começa emx=4
e termina emx=20
. A imagem gerada é:fonte
axhline
quando você precisa de um intervalo x específico da linha que pretendia desenhar. Qual é a diferença entre 'axhline' e 'hlines'?axhline
,xmin
exmax
são em termos de coordenadas dos eixos, de modo que eles estejam no intervalo [0, 1]. Você pode ver aqui a diferença entre os diferentes sistemas de coordenadas.xmin
exmax
diferença é a única diferença entreaxhline
ehlines
, o último não domina o primeiro?Use
matplotlib.pyplot.hlines
:y
pode ser transmitido como um único local:y=40
y
pode ser transmitido como vários locais:y=[39, 40, 41]
fig, ax = plt.subplots()
, substituaplt.hlines
ouplt.axhline
porax.hlines
ouax.axhline
, respectivamente.matplotlib.pyplot.axhline
só pode plotar um único local (por exemploy=40
)fonte
Além da resposta mais votada aqui, também é possível encadear
axhline
depois de chamarplot
umpandas
'sDataFrame
.fonte
Uma maneira fácil e agradável para as pessoas que sempre esquecem o comando
axhline
é o seguinteNo seu caso
xs = x
ey = 40
. Se len (x) for grande, isso se tornará ineficiente e você realmente deve usaraxhline
.fonte
Você pode usar
plt.grid
para desenhar uma linha horizontal.fonte