FrameTicks
- To: mathgroup at smc.vnet.net
- Subject: [mg70137] FrameTicks
- From: "Carabe - Fernandez, Alejandro" <a.carabe at imperial.ac.uk>
- Date: Thu, 5 Oct 2006 03:32:34 -0400 (EDT)
Hi,
I have a problem with FrameTicks. All I am trying to do is to plot a
Log-Linear plot using data that was originally on a Log-Linear graph.
The data is given with errors and I have realised that MultipleListPlot
does not allow to produce Log-Linear plots.
Please, see the attached file which contains the code I am using to
figure out how to do this.
Thank you - Alejandro
(*Please, copy and paste the following code on a new Mathematica window:
*)
<< Graphics`MultipleListPlot`;
<< Graphics`Graphics`;
<< DrawGraphics`DrawingMaster`
(*This is the data I have to plot, *)
datapoints = {{{0., 100.},ErrorBar[{-10.215, 10.215}]},
{{2., 82.93},ErrorBar[{-8.47, 8.47}]},
{{4., 74.12},ErrorBar[{-7.575, 7.575}]},
{{6., 50.97},ErrorBar[{-5.205, 5.205}]},
{{8., 45.56},ErrorBar[{-4.65, 4.65}]},
{{15.09, 22.37},ErrorBar[{-2.94, 2.94}]},
{{20., 20.37},ErrorBar[{-2.675, 2.675}]},
{{24.91, 15.67},ErrorBar[{-1.93, 1.93}]},
{{30., 14.27},ErrorBar[{-2.03, 2.03}]},
{{39.82, 7.27},ErrorBar[{-2.23, 2.23}]},
{{82.35, 5.2},ErrorBar[{-0.575, 0.575}]},
{{122.35, 3.3},ErrorBar[{-0.405, 0.405}]},
{{181.18, 3.03},ErrorBar[{-0.385, 0.385}]},
{{240., 2.28},ErrorBar[{-0.325, 0.325}]},
{{300., 1.82},ErrorBar[{-0.28, 0.28}]},
{{358.82, 1.53},ErrorBar[{-0.265, 0.265}]}}
Centerpoints = {{0., 100.}, {2., 82.93}, {4., 74.12}, {6., 50.97}, {8.,
45.56}, {15.09,22.37}, {20., 20.37}, {24.91, 15.67}, {30., 14.27},
{39.82, 7.27}, {82.35,5.2}, {122.35, 3.3}, {181.18, 3.03}, {240., 2.28},
{300., 1.82}, {358.82,1.53}}
plotData = LogListPlot[centerpoints, DefaultFont -> {"HelveticaBold",
18}, Frame -> True, PlotRange -> {{0, 400}, {1, 100}}, PlotStyle ->
{{RGBColor[0, 0, 1]}}, SymbolShape -> {PlotSymbol[Box, 3]}, SymbolStyle
-> {GrayLevel[0]}, FrameLabel -> {"Repair Time (h)", "Reciprocal
proportion of Dsb/Gbp"}]
Clear[x]
plotFits = LogPlot[{100/((1 + 0.18510740896898217` x)),100
Exp[(-0.016617718366691753`) x],
83.69 Exp[(-0.0643) x] + 6.16 Exp[(-0.003963) x]}, {x, 0, 400},
DefaultFont -> {"HelveticaBold", 18}, Frame -> True, PlotStyle ->
{{RGBColor[1, 0, 0]}, {RGBColor[0, 0, 1]},
{RGBColor[0.5, 0, .5]}}, FrameLabel -> {"Repair Time (h)", "Dsb/Gbp"}]
thisIsThePlot = Show[plotData, plotFits]
(* The problem is that, if I want error bars to appear in this plot, I
have to use the MultipleListPlot[] command, but this command does not
allow to plot using Log-Linear scale, so I have found a different way to
do it by using the following code... *)
dataLogPoints =
datapoints /. {{x_, y_}, ErrorBar[{low_, high_}]} :> {x, Log[y]};
errorData =
datapoints /. {{x_, y_},
ErrorBar[{low_, high_}]} :> {{x, Log[y + low]}, {x, Log[y +
high]}};
errorSymbol[width_][{{x_, low_}, {xdummy_, high_}}] :=
{AbsoluteThickness[1.7], RGBColor[0, 0, 0], Line[{{x, low}, {x,
high}}],
Line[{{x - width/2, low}, {x + width/2, low}}],
Line[{{x - width/2, high}, {x + width/2, high}}]};
Clear[x, y];
Draw2D[{(* Draw the error symbols *)
errorSymbol[10] /@ errorData,
(* Draw the fitted curves *)
Draw[Log[100/(1 + 0.18510740896898217` x)], {x, 0, 400},PlotStyle ->
{RGBColor[1, 0, 0]}],
Draw[Log[100 Exp[-0.016617718366691753` x]], {x, 0, 400},PlotStyle ->
{RGBColor[0, 0, 1]}],
Draw[Log[83.69 Exp[-0.0643 x] + 6.16 Exp[-0.003963 x]], {x, 0,
400},PlotStyle -> {RGBColor[.5, 0, .5]}],
(* Draw the data points *)
PlotSymbol[Box, 3, Filled -> True] /@ dataLogPoints},
Frame -> True,
DefaultFont -> {"HelveticaBold", 18},
FrameLabel -> {"Repair Time (h)", "Dsb/Gbp"},
FrameTicks -> {Automatic, LogScale[-1, 2.73], None, None},
PlotRange -> All]
(*As you can see, my problem now is to adjust the FrameTicks (the
LogScale[] values to be more precise) to obtain the same scaling on the
Y-axis as I had in thisIsThePlot. Can you suggest what would be the
correct FrameTicks here??
Thank you*)