MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: two y-axes with different scaling

  • To: mathgroup at smc.vnet.net
  • Subject: [mg95874] Re: two y-axes with different scaling
  • From: "Jaccard Florian" <Florian.Jaccard at he-arc.ch>
  • Date: Thu, 29 Jan 2009 05:52:30 -0500 (EST)
  • References: <200901281144.GAA22135@smc.vnet.net>

Hello Joerg,

If you look in the archives, you will see that this question has often come around.
There are several ways of doing it.

For example "by hand" (to plot y=sin(x) and y=3cos(x) with same looking amplitude):


d1 = Plot[{Sin[x], Cos[x]}, {x, 0, 10}, PlotRange -> {{0, 10}, {-1, 1}},

PlotStyle -> {Blue, Red}, Epilog -> {Text[Style["Sin(x)", FontColor -> Blue],

{2, 0.8}, Background -> White], Text[Style["3 Cos(x)", FontColor -> Red],

{5.2, 0.8}, Background -> White]}, DisplayFunction -> Identity];

Show[FullGraphics[d1] /. {{GrayLevel[0.], AbsoluteThickness[0.125],

Line[{{0., b_}, {c_, d_}}]} -> {Red, AbsoluteThickness[0.125],

Line[{{10, b}, {10 + c, d}}]}, Text[a_, {b_, c_}, {1., 0.}] ->

{Text[Style[3*a, FontColor -> Red], {b + 10, c}, {-1.5, 0}],

Text[Style[a, FontColor -> Blue], {b, c}, {1, 0}]}},

Graphics[{Red, Line[{{10, -1}, {10, 1}}]}], PlotRange -> {{-1.5, 12}, {-1.1, 1.1}}]



Or using what was on http://support.wolfram.com/mathematica/graphics/2d/twoaxisgraph.html (but I can't find it anymore) :

TwoAxisPlot[{f_, g_}, {x_, min_, max_}, frange_, grange_, (opts___)?OptionQ] :=

Module[{old, new, scale, pts, gstuff, fstuff}, {fm, fM} = frange;

{gm, gM} = grange; scale[var_] = ((var - gm)*(fM - fm))/(gM - gm) + fm;

old = AbsoluteOptions[Plot[g, {x, min, max}, Frame -> True, PlotRange -> grange,

DisplayFunction -> Identity], FrameTicks][[1,2,2]];

new = (Prepend[Rest[#1], scale[First[#1]]] & ) /@ old;

Plot[{f, scale[g]}, {x, min, max}, Frame -> True,

PlotRange -> frange + {0, 0.05*(fM - fm)}, FrameTicks ->

{Automatic, Automatic, None, new}, PlotStyle ->

{{Thickness[0.01], RGBColor[1, 0, 0]}, {Thickness[0.01], RGBColor[0, 1, 0]}},

FrameStyle -> {{}, {RGBColor[1, 0, 0]}, {}, {RGBColor[0, 1, 0]}}, opts]]



Example :



v[t_] := 3*t - 2

s[t_] := (3/2)*t^2 - 2*t

TwoAxisPlot[{v[t], s[t]}, {t, -10, 12}, {-50, 50}, {-100, 200},

GridLines -> {Range[-10, 12, 2], None},

Epilog -> {Text["v(t)", {-5, -20}, Background -> White],

Text["s(t)", {-8, 20}, Background -> White]}]

Regards

F.Jaccard

________________________________

De: Joerg [mailto:schaber at biologie.hu-berlin.de]
Date: mer. 28.01.2009 12:44
=C0: mathgroup at smc.vnet.net
Objet : [mg95861] two y-axes with different scaling



Hi,

I want to combine two 2-D plots into one.
However, I want to have two different
y-axes. One on the left and one two the right,
with different ticklabels, respectively.
How do I do that? I couln't find any
example in the help files.

Thanks,

joerg





  • Prev by Date: Re: Using Map or Thread over selected parts of nested lists
  • Next by Date: Re: Series expansion of x_n=Tan[x_n]
  • Previous by thread: two y-axes with different scaling
  • Next by thread: Re: two y-axes with different scaling