Thanks to everyone for the feedback, I actually tend to agree that the use of two different y axes in the same plot should be discouraged. Sometimes it's just too convenient... In the end, I used `Geom.subplot_grid` with a `Geom.bar` plot which worked fine. However, it only worked with `position=:dodge` as `:stack` messed up y axis rescaling with the grouped bar plot (see the [github issue](https://github.com/dcjones/Gadfly.jl/issues/220)).
Thanks again, Sven On Friday, February 28, 2014 5:53:33 PM UTC+1, David Chudzicki wrote: > > For Harlan's first alternative, what you want is: > http://dcjones.github.io/Gadfly.jl/geom_subplot_grid.html<http://www.google.com/url?q=http%3A%2F%2Fdcjones.github.io%2FGadfly.jl%2Fgeom_subplot_grid.html&sa=D&sntz=1&usg=AFQjCNGkuNRl54WCZ905qEjVlGLJ4I_giQ> > > Here's an example (below). We should put an example like this (with > free_y_axis=true) in the documentation. > > For some reason the call with (free_y_axis=true) is giving me trouble in > an IJulia/IPython notebook, but work for me everywhere else. (I'm pasting > the error message below.) > > -David > > > > using DataFrames > using Gadfly > > widedf = DataFrame(x = [1:10], var1 = [1:10], var2 = [1:10].^2) > > longdf = stack(widedf, [:var1, :var2]) > > # this isn't what we want b/c the scales are the same: > plot(longdf, ygroup="variable", x="x", y="value", > Geom.subplot_grid(Geom.point)) > > # this is what we want, but for some reason it isn't working for me in > iPython notebook > plot(longdf, ygroup="variable", x="x", y="value", > Geom.subplot_grid(Geom.point, free_y_axis=true)) > > > > > # argument range must not be empty > # in maximum_rgn at reduce.jl:336 > # in text_extents at > /Users/david/.julia/v0.3/Compose/src/fontfallback.jl:82 > # in render at /Users/david/.julia/v0.3/Gadfly/src/guide.jl:587 > # in render_prepared at /Users/david/.julia/v0.3/Gadfly/src/Gadfly.jl:712 > # in render at /Users/david/.julia/v0.3/Gadfly/src/geom/subplot.jl:201 > # in render_prepared at /Users/david/.julia/v0.3/Gadfly/src/Gadfly.jl:705 > # in render at /Users/david/.julia/v0.3/Gadfly/src/Gadfly.jl:656 > # in writemime at /Users/david/.julia/v0.3/Gadfly/src/Gadfly.jl:755 > # in sprint at io.jl:467 > # in display_dict at > /Users/david/.julia/v0.3/IJulia/src/execute_request.jl:35 > > On Fri, Feb 28, 2014 at 8:07 AM, Harlan Harris > <har...@harris.name<javascript:> > > wrote: > >> Don't do it. It's not good data visualization practice, and is explicitly >> and intentionally not supported in most grammar of graphics >> implementations. See, for one recent post I have handy: >> http://junkcharts.typepad.com/junk_charts/2014/02/a-message-worth-repeating.html >> >> Two good alternatives are to stack/facet the graphs, one on top of each >> other, or to normalize the Y values so that they're proportions of their >> initial values. The latter's pretty common in financial plots, where Y=100 >> for X=min(X) for all series, so they start at the same point and then >> diverge. >> >> >> >> >> On Fri, Feb 28, 2014 at 10:20 AM, Sven Mesecke >> <sven.m...@sveme.org<javascript:> >> > wrote: >> >>> I'd like to replicate the behavior of matlab's `plotyy` in Gadfly, i.e., >>> I'm trying to plot data with very different `y` axes but the same `x` axes >>> on the same plot, any idea of how to get this done? `layer` always seems to >>> use the same base `y` axis. >>> >>> Thanks for any pointers, >>> >>> Sven >>> >> >> > > > -- > David J. Chudzicki > blog.davidchudzicki.com > dch...@gmail.com <javascript:> > (518) 366-7303 > > Data Scientist > Kaggle (we're hiring!) >