J'ai utilisé l'interpolation spline pour lisser une série chronologique et j'aimerais également ajouter une ligne horizontale au tracé. Mais il semble y avoir un problème qui est hors de ma portée. Toute aide serait vraiment utile. Voici ce que j'ai:
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()
problème semble être avec mon utilisation de [0,len(xs)]
pour le traçage de lignes horizontales.
Vous recherchez
axhline
(une ligne d'axe horizontal). Par exemple, ce qui suit vous donnera une ligne horizontale ày = 0.5
:la source
axhline
.Si vous souhaitez dessiner une ligne horizontale dans les axes, vous pouvez également essayer la
ax.hlines()
méthode. Vous devez spécifier lay
position etxmin
etxmax
dans les coordonnées des données (c'est-à-dire votre plage de données réelle sur l'axe des x). Un exemple d'extrait de code est:L'extrait ci-dessus tracera une ligne horizontale dans les axes à
y=0.2
. La ligne horizontale commence àx=4
et se termine àx=20
. L'image générée est:la source
axhline
lorsque vous avez besoin d'une plage x spécifique de la ligne que vous avez l'intention de dessiner. Quelle est la différence entre «axhline» et «hlines»?axhline
, lesxmin
etxmax
sont en termes de coordonnées d'axes afin qu'ils soient dans la plage [0, 1]. Vous pouvez voir ici la différence entre les différents systèmes de coordonnées.xmin
et laxmax
différence est la seule différence entreaxhline
ethlines
, ce dernier ne domine-t-il pas le premier?Utilisez
matplotlib.pyplot.hlines
:y
peut être transmis comme un emplacement unique:y=40
y
peut être transmis comme plusieurs emplacements:y=[39, 40, 41]
fig, ax = plt.subplots()
, remplacezplt.hlines
ouplt.axhline
parax.hlines
ouax.axhline
, respectivement.matplotlib.pyplot.axhline
ne peut tracer qu'un seul emplacement (par exempley=40
)la source
En plus de la réponse la plus positive ici, on peut également enchaîner
axhline
après avoir appeléplot
unpandas
'sDataFrame
.la source
Un moyen simple et agréable pour les personnes qui oublient toujours la commande
axhline
est le suivantDans votre cas
xs = x
ety = 40
. Si len (x) est grand, cela devient inefficace et vous devriez vraiment l'utiliseraxhline
.la source
Vous pouvez utiliser
plt.grid
pour dessiner une ligne horizontale.la source