# Matplotlib. co-ordinates for scatter plot are off

eric.garlic at gmail.com eric.garlic at gmail.com
Tue Nov 26 20:34:31 CET 2013

Hi,

I have been following a very good online tutorial for matplotlib:

http://www.loria.fr/~rougier/teaching/matplotlib/#introduction

However, when I try to annotate the point where the cosine/sine graphs cross the scatter graph misses the point where it crosses the axes; green and pink colours.

Anyone know why and/or what I have done wrong?

Help appreciated

_______________________CODE BELOW_________________

#the points
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C,S=np.cos(x), np.sin(x)

#axis limits
xlim(x.min()*1.1, x.max()*1.1)
ylim(C.min()*1.1,C.max()*1.1)

#spines, there are four (top, bottom, left and right).
#spines, remove top and right, and move left and bottom
#gca returns current axis instance.  Used to control axis properties using either set or "Axes" methods
#I assume "gca" stands for Get Current Axis, like "gcf" stands for Get Current Figure
ax=gca()
#spines
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#ticks
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#reposition
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))

#ticks ticks as tuples and labels as LaTex tuples.
#Note: if these next two lines of code go before the spine changes the labelling is lost
xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
yticks([-1,0,1],[r'$-1$',r'0',r'$+1$'])

#plotting
plot(x,C,color="blue", linewidth = 2.5, linestyle="dotted",label = 'Sine')
plot(x,S, color="red", linewidth="2.5",linestyle="-.", label='Cosine')

#legend. Note remember to add label to plot statement e.g. 'Sine' as the legend requires it
#NOTE:  legend has to go after plot statement in order to get the graph labels
legend(loc='upper left')

#Annotation
#the green point.  NOTE: use the scatter method
t=pi/4
scatter([t,],[np.cos(t),],color='green',linewidth=10)
#draw the lines with plot
plot([t,cos(t)],[t,0],color='green')
plot([0,cos(t)],[t,cos(t)],color='pink')

scatter([t,],[0,],color='black')
scatter([0,],[cos(t),],color='black')

show()