|
From: <bm...@ca...> - 2011-02-22 10:41:48
|
It would be nice to have a cookbook section somewhere where
interesting code examples can be posted.
Benny
Quoting Michael Haggerty <mh...@al...>:
> On 02/21/2011 09:51 PM, John E Field wrote:
>> I installed Gnuplot.py and I like it a lot. How about a really quick and
>> easy routine to just plot a function or several functions. It seems like
>> I am plotting things so much that I shouldn't have to write several
>> lines of code to make it happen. Perhaps it is already in there and I
>> just don't know about it. Something sort of like this :
>
> I'm not such a fan of magical functions that try to guess what you mean.
> The problem is that everybody has a different opinion about what magic
> they prefer. I prefer flexible but straightforward functions that can
> be *used* to make magical functions. So I wouldn't advocate putting a
> function like this in Gnuplot.py, though it is a fine example.
>
>> gplot(x,y) <- plots y vs x
>> gplot(x,y,with_='lines',title='my title') <- adds title and plots with lines
>> gplot(x,y,z) <- plots y and z versus x
>> gplot([1,2],sin) <- plots sin(x) from 1.0 to 2.0
>>
>> and, the code might look something like this :
>>
>> def gplot(*xy,**args) :
>> """ routine for plotting a function using gnuplot directly from python
>> usage: pass arguments in args. for with lines, do with_='lines'
>> title = 'my title'
>> xlabel= 'my xlabel',
>> etc.
>> if the persist option is false, then the plot will only last
>> until the returned object is destroyed
>> otherwise, the plot is forever.
>> """
>> try :
>> if args.has_key('persist') :
>> g = Gnuplot.Gnuplot(persist=args['persist']);
>> del args['persist'];
>> else : g = Gnuplot.Gnuplot(persist=True);
>> except :
>> from Gnuplot import Gnuplot,Data
>> if args.has_key('persist') :
>> g = Gnuplot(persist=args['persist']);
>> del args['persist'];
>> else : g = Gnuplot(persist=True);
>> x = xy[0];
>> if len(x) == 2 : # fill up the range
>> x = [x[0]+(x[1]-x[0])*0.005*i for i in range(201)];
>> d = []; # make an argument list for each plot function
>> for yi in xy[1:] :
>> if not (yi.__class__ is list or yi.__class__ is tuple) : yi =
>> map(yi,x);
>> if args.has_key('with_') :
>> di = Data(x,yi,with_=args['with_']);
>> else : di = Data(x,yi);
>> d.append(di);
>> if args.has_key('with_') : del args['with_'];
>> return g.plot(*d,**args);
>
> BTW, there are some things in your function that can be simplified
> (untested code):
>
> def gplot(*xy,**args):
> """..."""
> try:
> Gnuplot, Data
> except NameError:
> from Gnuplot import Gnuplot, Data
>
> g = Gnuplot(persist=args.pop('persist', True));
>
> x = xy[0]
> if len(x) == 2:
> # fill up the range
> x = [x[0]+(x[1]-x[0])*0.005*i for i in range(201)]
> d = [] # make an argument list for each plot function
> data_opts = {}
> if 'with_' in args:
> data_opts['with_'] = args.pop('with_')
> for yi in xy[1:]:
> if not isinstance(yi, (list, tuple)):
> yi = map(yi,x)
> d.append(Data(x, yi, **data_args))
> return g.plot(*d, **args)
>
> Michael
>
> --
> Michael Haggerty
> mh...@al...
> http://softwareswirl.blogspot.com/
>
> ------------------------------------------------------------------------------
> Index, Search & Analyze Logs and other IT data in Real-Time with Splunk
> Collect, index and harness all the fast moving IT data generated by your
> applications, servers and devices whether physical, virtual or in the cloud.
> Deliver compliance at lower cost and gain new business insights.
> Free Software Download: http://p.sf.net/sfu/splunk-dev2dev
> _______________________________________________
> Gnuplot-py-users mailing list
> Gnu...@li...
> https://lists.sourceforge.net/lists/listinfo/gnuplot-py-users
>
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
|