Matplotlib. co-ordinates for scatter plot are off
EricGarlic
eric.garlic at gmail.com
Tue Nov 26 20:44:16 CET 2013
On Tuesday, November 26, 2013 7:34:31 PM UTC, EricGarlic wrote:
>
Correction: I meant Plot not Scatter - corrected below. Issue is with Plot statement
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 plot 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()
More information about the Python-list
mailing list