2017-07-11 2 views
0

Depuis deux jours, j'essaie de résoudre ce problème. Je trace des limites supérieures, j'ai donc besoin de flèches pointant vers le bas pour pointer sur mes points. Entre autres choses, j'ai maintenant essayé d'utiliser Plt.Error pour obtenir ces flèches. Le problème est que l'extrémité arrière de la flèche pointe sur le point et non sur la pointe. Ci-dessous, je montre mon code pour tracer ces données en omettant la partie où je lis dans les données. En outre, j'ai ajouté deux images. La première image est l'intrigue résultante. La deuxième image est de la flèche jaune dans cette parcelle qui se réfère au point (10, .0076) où vous pouvez voir clairement la fin de la flèche est le point à cette coordonnée.Les limites supérieures de Plt.Error ont une extrémité arrière du point de flèche à ma coordonnée

matplotlib.pyplot import comme plt numpy d'importation comme np importation pylab

f1 = plt.figure(0) 
plt.errorbar(days,fluxdensity,yerr=0.01,uplims=True,linestyle='none',markeredgewidth=5,elinewidth=5) 
plt.errorbar(days2, fluxdensity2, yerr=0.01,uplims=True,linestyle='none',markeredgewidth=5,elinewidth=5) 
plt.errorbar(days3, fluxdensity3, yerr=0.01,uplims=True,linestyle='none',markeredgewidth=5,elinewidth=5) 
plt.errorbar(days4, fluxdensity4,yerr=0.01,uplims=True,linestyle='none',markeredgewidth=5,elinewidth=5) 

plt.grid() 



plt.xlabel('Days Since Explosion', fontsize=18) 
plt.ylabel('Flux Density muJy', fontsize=16) 
plt.savefig('2014dtflux.pdf',format='pdf') 
plt.xlim((9.9,10.1)) 
plt.ylim((-.03,.12)) 
plt.show() 

Full Plot

Example of One Point Showing That The Tail of the Arrow is Pointing at (10,.0076)

Répondre

0

Il semble que vous voulez dessiner une flèche. Pour dessiner une flèche dans matplotlib, on peut utiliser un FancyArrowPatch.

enter image description here

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 

style="Simple,tail_width=2,head_width=5,head_length=7" 
kw = dict(arrowstyle=style, color="k") 

a1 = patches.FancyArrowPatch((0,0.7), (0,0.5),**kw) 
a2 = patches.FancyArrowPatch((0,0.4), (0.0,0.3),**kw) 


for a in [a1,a2]: 
    plt.gca().add_patch(a) 

plt.xlim(-1,1) 

plt.show()