Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #56900 > unrolled thread

Markers on a matplotlib plot

Started byBrandon La Porte <laporte.brandon@gmail.com>
First post2013-10-16 14:34 -0700
Last post2013-10-17 14:35 -0400
Articles 5 — 3 participants

Back to article view | Back to comp.lang.python


Contents

  Markers on a matplotlib plot Brandon La Porte <laporte.brandon@gmail.com> - 2013-10-16 14:34 -0700
    Re: Markers on a matplotlib plot Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-10-16 23:31 +0100
      Re: Markers on a matplotlib plot Brandon La Porte <laporte.brandon@gmail.com> - 2013-10-16 18:31 -0700
        Re: Markers on a matplotlib plot Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-10-17 08:06 +0100
    Re: Markers on a matplotlib plot Piet van Oostrum <piet@vanoostrum.org> - 2013-10-17 14:35 -0400

#56900 — Markers on a matplotlib plot

FromBrandon La Porte <laporte.brandon@gmail.com>
Date2013-10-16 14:34 -0700
SubjectMarkers on a matplotlib plot
Message-ID<05dfa5c6-0516-403a-8970-f944084ac4ed@googlegroups.com>
I have the following code to make a plot of 4 different supply curves (economics).


from matplotlib import pyplot as plt

price = range(0,51)
q1 = [x/2.0 for x in price]
q2 = [x/4.0 for x in price]
q3 = [x/5.0 for x in price]
q4 = [x/10.0 for x in price]

markers_on = [20, 40]

plt.plot(q1,price,'b',q2,price,'g',q3,price,'r', q4, price, 'y' )
plt.title('Supply Curve')
plt.xlabel('Quantity Supplied (Thousands per month')
plt.ylabel('Price ($)')
#plt.legend(('Kd = %d'%kd, 'Kd = %d'%kd2, 'Kd = %d'% kd3, 'Step'), loc=4)
plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)

plt.grid()
plt.show()

I would like to place markers on the 4 curves when the price is equal to $20 label it A, and when the price is equal to $40 and label it B.  Does anyone know how I can accomplish this.

[toc] | [next] | [standalone]


#56901

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2013-10-16 23:31 +0100
Message-ID<mailman.1121.1381962686.18130.python-list@python.org>
In reply to#56900
On 16/10/2013 22:34, Brandon La Porte wrote:
> I have the following code to make a plot of 4 different supply curves (economics).
>
>
> from matplotlib import pyplot as plt
>
> price = range(0,51)
> q1 = [x/2.0 for x in price]
> q2 = [x/4.0 for x in price]
> q3 = [x/5.0 for x in price]
> q4 = [x/10.0 for x in price]
>
> markers_on = [20, 40]
>
> plt.plot(q1,price,'b',q2,price,'g',q3,price,'r', q4, price, 'y' )
> plt.title('Supply Curve')
> plt.xlabel('Quantity Supplied (Thousands per month')
> plt.ylabel('Price ($)')
> #plt.legend(('Kd = %d'%kd, 'Kd = %d'%kd2, 'Kd = %d'% kd3, 'Step'), loc=4)
> plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)
>
> plt.grid()
> plt.show()
>
> I would like to place markers on the 4 curves when the price is equal to $20 label it A, and when the price is equal to $40 and label it B.  Does anyone know how I can accomplish this.
>

If this matplotlib.pyplot.text described here 
http://matplotlib.org/api/pyplot_api.html isn't any good I suggest you 
ask on the dedicated matplotlib users mailing list see 
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

-- 
Roses are red,
Violets are blue,
Most poems rhyme,
But this one doesn't.

Mark Lawrence

[toc] | [prev] | [next] | [standalone]


#56927

FromBrandon La Porte <laporte.brandon@gmail.com>
Date2013-10-16 18:31 -0700
Message-ID<f1a5b1e7-f2fd-4061-addb-ebab46c131ad@googlegroups.com>
In reply to#56901
On Wednesday, 16 October 2013 18:31:09 UTC-4, Mark Lawrence  wrote:
> On 16/10/2013 22:34, Brandon La Porte wrote:
> 
> > I have the following code to make a plot of 4 different supply curves (economics).
> 
> >
> 
> >
> 
> > from matplotlib import pyplot as plt
> 
> >
> 
> > price = range(0,51)
> 
> > q1 = [x/2.0 for x in price]
> 
> > q2 = [x/4.0 for x in price]
> 
> > q3 = [x/5.0 for x in price]
> 
> > q4 = [x/10.0 for x in price]
> 
> >
> 
> > markers_on = [20, 40]
> 
> >
> 
> > plt.plot(q1,price,'b',q2,price,'g',q3,price,'r', q4, price, 'y' )
> 
> > plt.title('Supply Curve')
> 
> > plt.xlabel('Quantity Supplied (Thousands per month')
> 
> > plt.ylabel('Price ($)')
> 
> > #plt.legend(('Kd = %d'%kd, 'Kd = %d'%kd2, 'Kd = %d'% kd3, 'Step'), loc=4)
> 
> > plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)
> 
> >
> 
> > plt.grid()
> 
> > plt.show()
> 
> >
> 
> > I would like to place markers on the 4 curves when the price is equal to $20 label it A, and when the price is equal to $40 and label it B.  Does anyone know how I can accomplish this.
> 
> >
> 
> 
> 
> If this matplotlib.pyplot.text described here 
> 
> http://matplotlib.org/api/pyplot_api.html isn't any good I suggest you 
> 
> ask on the dedicated matplotlib users mailing list see 
> 
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
> 
> 
> -- 
> 
> Roses are red,
> 
> Violets are blue,
> 
> Most poems rhyme,
> 
> But this one doesn't.
> 
> 
> 
> Mark Lawrence

Hi Mark

Thanks for the quick reply.  I went through the documentation briefly and made some changes.

from matplotlib import pyplot as plt

q1 = 2.0
q2 = 4.0
q3 = 5.0
q4 = 10.0

p1 = 20
p2 = 40
price = range(0,51)
qlist1 = [x/q1 for x in price]
qlist2 = [x/q2 for x in price]
qlist3 = [x/q3 for x in price]
qlist4 = [x/q4 for x in price]


plt.plot(qlist1,price,'b',qlist2,price,'g',qlist3,price,'r', qlist4, price, 'y' )
plt.plot(p1/q1,p1,'ko', p1/q2, p1, 'ko', p1/q3,p1, 'ko', p1/q4, p1, 'ko')
plt.plot(p2/q1,p2,'ks', p2/q2, p2, 'ks', p2/q3,p2, 'ks', p2/q4, p2, 'ks')

plt.title('Supply Curve')
plt.xlabel('Quantity Supplied (Thousands per month)')
plt.ylabel('Price ($)')
plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)

plt.grid()
plt.show()


I'm sure there is a better or more "Pythonic" way to do this, and I still need to figure out how to label the individual points.  Again thanks for the links, and I'll update this post when I figure it out.

Thanks
Brandon

[toc] | [prev] | [next] | [standalone]


#56940

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2013-10-17 08:06 +0100
Message-ID<mailman.1147.1381993807.18130.python-list@python.org>
In reply to#56927
On 17/10/2013 02:31, Brandon La Porte wrote:
> On Wednesday, 16 October 2013 18:31:09 UTC-4, Mark Lawrence  wrote:
>> On 16/10/2013 22:34, Brandon La Porte wrote:
>>
>>> I have the following code to make a plot of 4 different supply curves (economics).
>>
>>>
>>
>>>
>>
>>> from matplotlib import pyplot as plt
>>
>>>
>>
>>> price = range(0,51)
>>
>>> q1 = [x/2.0 for x in price]
>>
>>> q2 = [x/4.0 for x in price]
>>
>>> q3 = [x/5.0 for x in price]
>>
>>> q4 = [x/10.0 for x in price]
>>
>>>
>>
>>> markers_on = [20, 40]
>>
>>>
>>
>>> plt.plot(q1,price,'b',q2,price,'g',q3,price,'r', q4, price, 'y' )
>>
>>> plt.title('Supply Curve')
>>
>>> plt.xlabel('Quantity Supplied (Thousands per month')
>>
>>> plt.ylabel('Price ($)')
>>
>>> #plt.legend(('Kd = %d'%kd, 'Kd = %d'%kd2, 'Kd = %d'% kd3, 'Step'), loc=4)
>>
>>> plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)
>>
>>>
>>
>>> plt.grid()
>>
>>> plt.show()
>>
>>>
>>
>>> I would like to place markers on the 4 curves when the price is equal to $20 label it A, and when the price is equal to $40 and label it B.  Does anyone know how I can accomplish this.
>>
>>>
>>
>>
>>
>> If this matplotlib.pyplot.text described here
>>
>> http://matplotlib.org/api/pyplot_api.html isn't any good I suggest you
>>
>> ask on the dedicated matplotlib users mailing list see
>>
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>>
>> --
>>
>> Roses are red,
>>
>> Violets are blue,
>>
>> Most poems rhyme,
>>
>> But this one doesn't.
>>
>>
>>
>> Mark Lawrence
>
> Hi Mark
>
> Thanks for the quick reply.  I went through the documentation briefly and made some changes.
>
> from matplotlib import pyplot as plt
>
> q1 = 2.0
> q2 = 4.0
> q3 = 5.0
> q4 = 10.0
>
> p1 = 20
> p2 = 40
> price = range(0,51)
> qlist1 = [x/q1 for x in price]
> qlist2 = [x/q2 for x in price]
> qlist3 = [x/q3 for x in price]
> qlist4 = [x/q4 for x in price]
>
>
> plt.plot(qlist1,price,'b',qlist2,price,'g',qlist3,price,'r', qlist4, price, 'y' )
> plt.plot(p1/q1,p1,'ko', p1/q2, p1, 'ko', p1/q3,p1, 'ko', p1/q4, p1, 'ko')
> plt.plot(p2/q1,p2,'ks', p2/q2, p2, 'ks', p2/q3,p2, 'ks', p2/q4, p2, 'ks')
>
> plt.title('Supply Curve')
> plt.xlabel('Quantity Supplied (Thousands per month)')
> plt.ylabel('Price ($)')
> plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)
>
> plt.grid()
> plt.show()
>
>
> I'm sure there is a better or more "Pythonic" way to do this, and I still need to figure out how to label the individual points.  Again thanks for the links, and I'll update this post when I figure it out.
>
> Thanks
> Brandon
>

Fine, if you need more help I'll try but I'm no matplotlib expert, your 
best bet is still its user mailing list.

Slight aside would you please read and action this link 
https://wiki.python.org/moin/GoogleGroupsPython, a quick glance above 
will tell you why, thanks :)

-- 
Roses are red,
Violets are blue,
Most poems rhyme,
But this one doesn't.

Mark Lawrence

[toc] | [prev] | [next] | [standalone]


#56979

FromPiet van Oostrum <piet@vanoostrum.org>
Date2013-10-17 14:35 -0400
Message-ID<m2wqlbeoe8.fsf@cochabamba.vanoostrum.org>
In reply to#56900
Brandon La Porte <laporte.brandon@gmail.com> writes:

> I have the following code to make a plot of 4 different supply curves (economics).
>
>
> from matplotlib import pyplot as plt
>
> price = range(0,51)
> q1 = [x/2.0 for x in price]
> q2 = [x/4.0 for x in price]
> q3 = [x/5.0 for x in price]
> q4 = [x/10.0 for x in price]
>
> markers_on = [20, 40]
>
> plt.plot(q1,price,'b',q2,price,'g',q3,price,'r', q4, price, 'y' )
> plt.title('Supply Curve')
> plt.xlabel('Quantity Supplied (Thousands per month')
> plt.ylabel('Price ($)')
> #plt.legend(('Kd = %d'%kd, 'Kd = %d'%kd2, 'Kd = %d'% kd3, 'Step'), loc=4)
> plt.legend(('p = 2Qs', 'p = 4Qs', 'p = 5Qs', 'p = 10Qs'), loc=4)
>
> plt.grid()
> plt.show()
>
> I would like to place markers on the 4 curves when the price is equal to $20 label it A, and when the price is equal to $40 and label it B.  Does anyone know how I can accomplish this.

Something like:

plt.plot(20,40, 'bo')
plt.annotate('B', (20,40), xytext=(-10,10), textcoords='offset points')

Of course you should write a loop to calculate the x, y points, and use the proper colors.

-- 
Piet van Oostrum <piet@vanoostrum.org>
WWW: http://pietvanoostrum.com/
PGP key: [8DAE142BE17999C4]

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web