Hi André,

André Wobst wrote (2009-08-10 12:24):
> A quick and dirty solution could be to use the multi-column feature of
> the graph keys:
>
> from pyx import *
>
> titles = ["spam", "eggs"]
> g = graph.graphxy(width=8, key=graph.key.key(columns=2, columndist=0))
> g.plot(graph.data.file("minimal.dat", x=1, y=2, title=r"\vphantom{%s}"
> % titles[0]))
> g.plot(graph.data.file("minimal.dat", x=1, y=2, title=r"\vphantom{%s}"
> % titles[1]))
> g.plot(graph.data.function("y(x)=4*x", title=titles[0]))
> g.plot(graph.data.function("y(x)=4*x", title=titles[1]))
> g.writePDFfile("minimal")

Thank you so much for this suggestion, you've just saved me at least a day's 
work! This is exactly what I was hoping for.

Thank you for your suggestions about the proper way to do it, too. Sorry that 
I won't have a go at implementing them.

> However it's a more difficult to do it properly. The problem is that
> the graph key gets called with a list of plotitems drawn in the graph.
> I would not suggest to alter this. Instead my advice is to create an
> individual version of the graph.key.key-class.

For what it's worth, just before I your email arrived I was about to implement 
a graph.style (like symbol and line), the idea being that this new style takes 
multiple data sets and multiple "real" styles, and (roughly speaking) zips 
them together. All the data would have to be in the same file (I think), but 
that isn't too bad.

Anyway, the quick and dirty way works great. Thanks again!
Brendon

> To get started you should create a link between the corresponding
> plotitems. For example:
>
> theory = g.plot(graph.data.file("minimal.dat", x=1, y=2))
> experiment = g.plot(graph.data.function("y(x)=4*x", title="spam"))
> experiment.corresponding_theory = theory
>
> In the end you may nicely hide this in an individual plot command (by
> subclassing graph):
>
> g.combiplot(graph.data.file("minimal.dat", x=1, y=2),
> graph.data.function("y(x)=4*x"), title="spam")
>
> Once a link between the corresponding plotitems is injected in the
> plotitems, you just need to properly handle this in the graph key.
> Using the injection inserted above, you should evaluate
> hasattr(plotitem, "corresponding_theory") and do whatever you want
> along the lines of the original graph.key.key. In the end you just
> need to call the plotitems key_pt methods with proper arguments ...
> they take care with the style lists and internal data for the
> changeable attributes and all those bulky details ...
>
> Best
>
>
> André
>
> Am 06.08.2009 um 10:08 schrieb Brendon Higgins:
> > Hi list,
> >
> > I have a use case that I'm trying to solve: I have several pairs of
> > X/Y plots.
> > Each pair consists of one line of numerical simulation data and one
> > set of
> > experimentally measured points with error bars. The easy and simple
> > thing to
> > do is to have each plot have a unique key entry (titles like "Some
> > plot title
> > (numeric)", "Some plot title (experiment)"). But in context it
> > should be quite
> > obvious that the lines are simulations and the dots are experimental
> > results,
> > so it's really just a lot of annoying redundancy and wasted space.
> >
> > So I'm trying to come up with a way to combine the theory and
> > experiment lines
> > into a single key entry. In particular, I want each title next to
> > all of the
> > points and line indicators for the corresponding plots. Like this:
> > X --- Some plot title
> > O ... Another plot title
> >
> > I can't see a way to do this in PyX. So my half-baked idea is to
> > make a class
> > that acts as a container for multiple plotitems, and has the same
> > interface as
> > plotitem (maybe a subclass). Is this crazy? Anyone have a simpler
> > idea?
> >
> > I will confess that up to this point I've been using PyxPlot, rather
> > than PyX
> > proper, but I don't think the conversion itself would be difficult.
> > I'd rather
> > just get an opinion as to whether doing what I suggest really is
> > possible, or
> > if there's an easier way that I've missed.
> >
> > Peace,
> > Brendon
> >
> > -------------------------------------------------------------------------
> >----- Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> > 30-Day
> > trial. Simplify your report design, integration and deployment - and
> > focus on
> > what you do best, core application coding. Discover what's new with
> > Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> > _______________________________________________
> > PyX-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/pyx-user


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
PyX-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyx-user

Reply via email to