Как использовать функцию обратного масштабирования с ошибками в Mathematica? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть данные, которые я хотел бы вывести вместе с соответствующими барами ошибок:

{{{54927.7, -1.91044}, ErrorBar[38.2664, 0.0538982]},
 {{55320.9, -1.97673}, ErrorBar[45.3592, 0.101486]},
 {{55671.4, -2.15716}, ErrorBar[41.2234, 0.0258249]},
 {{56032.9, -2.15957}, ErrorBar[38.8805, 0.0191277]},
 {{56410.6, -2.14289}, ErrorBar[41.5501, 0.0189911]},
 {{56787.2, -2.19703}, ErrorBar[38.1972, 0.00632055]},
 {{57137.5, -2.1839}, ErrorBar[35.6098, 0.0084108]},
 {{57493.3, -2.19994}, ErrorBar[38.0298, 0.00651633]},
 {{57859.5, -2.19687}, ErrorBar[40.9682, 0.00658857]}}

Я могу использовать функцию «ErrorListPlot» в * Mathematica очень хорошо, однако, если я хотел бы обратить вспятьМасштаб оси y с функцией «ScalingFunctions ->« Reverse »», столбцы ошибок не отображаются вместе с данными ..... какие-либо предложения о том, как это исправить?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018
Needs["ErrorBarPlots`"]

data = {
   {{54927.7, -1.91044}, ErrorBar[38.2664, 0.0538982]},
   {{55320.9, -1.97673}, ErrorBar[45.3592, 0.101486]},
   {{55671.4, -2.15716}, ErrorBar[41.2234, 0.0258249]},
   {{56032.9, -2.15957}, ErrorBar[38.8805, 0.0191277]},
   {{56410.6, -2.14289}, ErrorBar[41.5501, 0.0189911]},
   {{56787.2, -2.19703}, ErrorBar[38.1972, 0.00632055]},
   {{57137.5, -2.18390}, ErrorBar[35.6098, 0.0084108]},
   {{57493.3, -2.19994}, ErrorBar[38.0298, 0.00651633]},
   {{57859.5, -2.19687}, ErrorBar[40.9682, 0.00658857]}};

(* Invert the error bars, visible in InputForm *)
ep = InputForm[ErrorListPlot[data]] /.
   {Line[{{a_, b_}, {c_, d_}}] :> Line[{{a, -b}, {c, -d}}], 
    Line[{Offset[e_, {f_, g_}], Offset[h_, {i_, j_}]}] :> 
     Line[{Offset[e, {f, -g}], Offset[h, {i, -j}]}]};
(* Discard the InputForm wrapper *)
ep2 = First[ep];

Show[ErrorListPlot[data, ScalingFunctions -> "Reverse"],
 Delete[ep2, Most@First@Position[ep2, Point]]]

enter image description here

0 голосов
/ 22 сентября 2018

Аналогично этому вопросу .Некоторые возятся, чтобы тики выглядели правильно.

Needs["ErrorBarPlots`"]

data = {
   {{54927.7, -1.91044}, ErrorBar[38.2664, 0.0538982]},
   {{55320.9, -1.97673}, ErrorBar[45.3592, 0.101486]},
   {{55671.4, -2.15716}, ErrorBar[41.2234, 0.0258249]},
   {{56032.9, -2.15957}, ErrorBar[38.8805, 0.0191277]},
   {{56410.6, -2.14289}, ErrorBar[41.5501, 0.0189911]},
   {{56787.2, -2.19703}, ErrorBar[38.1972, 0.00632055]},
   {{57137.5, -2.18390}, ErrorBar[35.6098, 0.0084108]},
   {{57493.3, -2.19994}, ErrorBar[38.0298, 0.00651633]},
   {{57859.5, -2.19687}, ErrorBar[40.9682, 0.00658857]}};

data[[All, 1, 2]] = -data[[All, 1, 2]];
ep = ErrorListPlot[data];
newTicks = AbsoluteOptions[ep, Ticks][[1, 2, 2]] /.
   {x1_, x2_, x3_, x4_} :> If[x1 == x2,
     {x1, NumberForm[-x2, {3, 2}], {0.014, 0}, x4},
     {x1, x2, {0.007, 0}, x4}];
newTicks = newTicks /. {
    GrayLevel[0.] -> GrayLevel[0.5],
    AbsoluteThickness[0.25] -> AbsoluteThickness[0.18],
    AbsoluteThickness[0.125] -> AbsoluteThickness[0.08]};
ErrorListPlot[data, Ticks -> {Automatic, newTicks}]

enter image description here

...