Re: How can I create a two-axis graph in Mathematica v6
- To: mathgroup at smc.vnet.net
- Subject: [mg91745] Re: How can I create a two-axis graph in Mathematica v6
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sun, 7 Sep 2008 05:34:45 -0400 (EDT)
- References: <g9t6of$ja8$1@smc.vnet.net>
Hi, somthing is mix up the Mathematica parser and if you transform the Input Cell of TwoAxisPlot[] into the InputForm[] the result is TwoAxisPlot[{f_, g_}, {x_, x0_, x1_}, opts : OptionsPattern[]] := Module[{f0, f1, g0, g1, gp, scale, gticks}, ({f0, f1} = Options[Plot[f, {x, x0, x1}, Frame -> True, opts], PlotRange][[1, 2, 2]]; )* ({g0, g1} = Options[gp = Plot[g, {x, x0, x1}, Frame -> True, opts], PlotRange][[1, 2, 2]]; )* (scale[y_] := f0 + ((f1 - f0)*(y - g0))/(g1 - g0); )* (gticks = Apply[{scale[#1], ##2} & , AbsoluteOptions[gp, FrameTicks][[1, 2, 2]], {1}]; )* Plot[{f, scale[g]}, {x, x0, x1}, PlotRange -> 1.001*{f0, f1}, Frame -> True, FrameTicks -> {{Automatic, gticks}, {Automatic, Automatic}}, FrameStyle -> {{defaultColor[1], defaultColor[2]}, {{}, {}}}, opts]] notice the (__)* at the line ends. Try TwoAxisPlot[{f_, g_}, {x_, x0_, x1_}, opts : OptionsPattern[]] := Module[{f0, f1, g0, g1, gp, scale, gticks}, {f0, f1} = Options[Plot[f, {x, x0, x1}, Frame -> True, opts], PlotRange][[1, 2, 2]]; {g0, g1} = Options[gp = Plot[g, {x, x0, x1}, Frame -> True, opts], PlotRange][[1, 2, 2]]; scale[y_] := f0 + ((f1 - f0)*(y - g0))/(g1 - g0); gticks = Apply[{scale[#1], ##2} & , AbsoluteOptions[gp, FrameTicks][[1, 2, 2]], {1}]; Plot[{f, scale[g]}, {x, x0, x1}, PlotRange -> 1.001*{f0, f1}, Frame -> True, FrameTicks -> {{Automatic, gticks}, {Automatic, Automatic}}, FrameStyle -> {{defaultColor[1], defaultColor[2]}, {{}, {}}}, opts]] and all work as expected. Regards Jens avteran1 at gmail.com wrote: > Hello All, > > In my efforts to create a two-axis graph in Mathematica v6. I came > across a Mathematica Technical Support FAQ titled "Can I create a two- > axis graph in Mathematica?" There are two versions of this FAQ the > most recent and updated version of the FAQ can be found at the > following URL: > > http://support.wolfram.com/mathematica/graphics/combine/twoaxisgraph.en.html > > The URL site provides a Mathematica notebook titled "twoaxisgraph.en" > which may be downloaded. > > I have downloaded the "twoaxisgraph.en" notebook and have tried to use > it for my application but I continue to have problems with this code. > Without making any changes to the downloaded notebook and when > evaluating the part of the notebook that is for Mathematica 6.0 and > later, I do not get the same output plot as originally displayed in > the downloaded notebook. Specifically I am referring to the output > plots Out[4], Out[5], Out[7], and Out[8] that appear in the first part > of the web page. Instead, the output has "Null^4" preceding the plot > and the image size of the output plot is small and must be resized > manually to be able to be viewed. > > This is one problem with the part of the notebook dealing with > "Working with Continuous Plots" with "Mathematica 6.0 and Later." The > second problem is that it seems this code does not entirely do what I > need it to do. > > Ideally I would like to have something similar to the TwoAxisPlot > command that is used in the section "Working with Continuous Plots" > for "Mathematica Versions Prior to 6.0." That version allows you to > specify the common "x-range" to both plots and choose the "y-ranges" > for each individual plot to be plotted. This way you can see both > plots in their entirety regardless if one plots range is many times > larger than the others. Please refer to both the input and output > graphics of the last section of the web page, specifically In[2], > In[3], Out[2], and Out[3]. > > I need help with either making the code for "Working with Continuous > Plots" with "Mathematica 6.0 and Later" do what the code for "Working > with Continuous Plots" with "Mathematica Versions Prior to 6.0" does, > or change the code in "Working with Continuous Plots" with > "Mathematica Versions Prior to 6.0" so that it will work in > Mathematica v6. (Please refer to the URL) > > I am not very knowledgeable in Mathematica programming so any > assistance with this matter would be greatly appreciated. Any > suggestions or insight on how to change this notebook code to apply to > my needs would also help. As a reminder I am using Mathematica > v6.0.2.0. > > Thank you, > Tony >