Re: [Matplotlib-users] logairthmic contour plot

2012-06-14 Thread Steven Boada
List,

I'm making a scatter plot using a for loop. Here's a simple example..

for i in range(10):
 x=rand()
 y=rand()
 scatter(x,y,label='point')

legend()
show()


When you do this, you get a legend entry for every single point. In this 
case, I get 9 entries in my legend.

Is there a way to only get a single entry? I have looked into creating 
the legends by hand, but I'm not having much luck. Googling, only turned 
up a single example of someone else with the same problem.

Help me list, you're my only hope.

Steven

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] logairthmic contour plot

2012-06-14 Thread Daπid
If all your values are positive (and you are sure of it), you could
use the SymmetricalLogScale  It uses log scale for large values (both
positive and negative), and linear for small ones.

http://matplotlib.sourceforge.net/devel/add_new_projection.html

I believe there is a way to do it without going symetrical (ie, only
defined for positive values), but I am unable to find it.

On Wed, Jun 13, 2012 at 7:31 PM, jonasr jonas.rueb...@web.de wrote:

 Hi,

 im actually trying to make a countour plot Z=f(X,Y) from two variables X,Y .
 My Problem is that i have to use a logarithmic scale for the Z values.
 If i plot the data with the logarithmic scale it gets pretty ugly, because i
 have a lot of values which are zero,
 which means on the log scale the value goes to -inf.
 Here is an example what i mean

 http://www.imagebanana.com/view/qh1khpxp/example.png

 I acutally have no idea how to make the plot look better,
 maybe somebody has an idea ?

 thank you
 --
 View this message in context: 
 http://old.nabble.com/logairthmic-contour-plot-tp34007155p34007155.html
 Sent from the matplotlib - users mailing list archive at Nabble.com.


 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] logairthmic contour plot

2012-06-14 Thread Daπid
First, this is another topic, so please, change the subject of the
message so it doesn't get messed up with others (and possible help
lost in the process).

Now, you are indeed plotting one dot at the time and generating a
label for it. If you don't want that, you have to plot the whole list
at the time:


x=[rand() for i in xrange(10)]
y=[rand() for i in xrange(10)]

scatter(x,y, label='points')
legend()
show()

where the definition of x includes a list comprehension (equivalent at
for i in xrange(10): x.append(rand()) ).

On another topic, people are not usually fan of using  from MODULEX
import *, as it can turn into poor code and name collisions. It is
nicer if you write import pylab as plt, and refer to the functions
as plt.scatter and so on.


Regards.

On Wed, Jun 13, 2012 at 9:21 PM, Steven Boada bo...@physics.tamu.edu wrote:
 List,

 I'm making a scatter plot using a for loop. Here's a simple example..

 for i in range(10):
     x=rand()
     y=rand()
     scatter(x,y,label='point')

 legend()
 show()


 When you do this, you get a legend entry for every single point. In this
 case, I get 9 entries in my legend.

 Is there a way to only get a single entry? I have looked into creating
 the legends by hand, but I'm not having much luck. Googling, only turned
 up a single example of someone else with the same problem.

 Help me list, you're my only hope.

 Steven

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] logairthmic contour plot

2012-06-14 Thread Benjamin Root
On Thursday, June 14, 2012, Daπid wrote:

 First, this is another topic, so please, change the subject of the
 message so it doesn't get messed up with others (and possible help
 lost in the process).

 Now, you are indeed plotting one dot at the time and generating a
 label for it. If you don't want that, you have to plot the whole list
 at the time:


 x=[rand() for i in xrange(10)]
 y=[rand() for i in xrange(10)]

 scatter(x,y, label='points')
 legend()
 show()

 where the definition of x includes a list comprehension (equivalent at
 for i in xrange(10): x.append(rand()) ).

 On another topic, people are not usually fan of using  from MODULEX
 import *, as it can turn into poor code and name collisions. It is
 nicer if you write import pylab as plt, and refer to the functions
 as plt.scatter and so on.


 Regards.


Point of style: in general, yes, but pylab was intended for that to help
transition matlab users. Pylab really shouldn't be loaded as plt, because
that is what pyplot is usually imported as.  Of course, this is all just a
matter of style and preference.
Cheers
!
Ben Root
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] logairthmic contour plot

2012-06-13 Thread Eric Firing
On 06/13/2012 07:31 AM, jonasr wrote:

 Hi,

 im actually trying to make a countour plot Z=f(X,Y) from two variables X,Y .
 My Problem is that i have to use a logarithmic scale for the Z values.
 If i plot the data with the logarithmic scale it gets pretty ugly, because i
 have a lot of values which are zero,
 which means on the log scale the value goes to -inf.
 Here is an example what i mean

 http://www.imagebanana.com/view/qh1khpxp/example.png

 I acutally have no idea how to make the plot look better,
 maybe somebody has an idea ?

Use np.ma.masked_less to mask out values below some threshold before 
taking the log.

e.g.,

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 1, 0.01)
y = np.arange(0, 8, 0.05)
X, Y = np.meshgrid(x, y)
Z = 10 ** (-5 + 11 * X * np.sin(Y))
Z = np.ma.masked_less(Z, 1e-4)
Zlog = np.ma.log10(Z)
CS = plt.contourf(X, Y, Zlog, levels=np.arange(-3, 5.01, 1.0), 
extend='both')
plt.colorbar()



Eric


 thank you


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users