построение по оси Y в Mathematica - PullRequest
9 голосов
/ 01 июня 2011

У меня есть еще один вопрос о Wolfram Mathematica.Есть кто-то, кто знает, как я могу нарисовать графику по оси Y?

Я надеюсь, что эта цифра поможет.

enter image description here

Ответы [ 5 ]

9 голосов
/ 02 июня 2011

Вы можете перевернуть оси после построения с помощью Reverse:

g = Plot[Sin[x], {x, 0, 9}];

Show[g /. x_Line :> Reverse[x, 3], PlotRange -> Automatic]

enter image description here

С небольшим изменением это работает и для участков, использующих Filling:

g1 = Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]}];
g2 = Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]}, Filling -> {1 -> {2}}];

Show[# /. x_Line | x_GraphicsComplex :> x~Reverse~3,
     PlotRange -> Automatic] & /@ {g1, g2}

enter image description here

(может быть более надежным заменить RHS :> на MapAt[#~Reverse~2 &, x, 1])


как функция

Вот форма, которую я рекомендую использовать один раз. Он включает в себя переворот оригинала PlotRange, а не форсирование PlotRange -> All:

axisFlip = # /. {
   x_Line | x_GraphicsComplex :> 
      MapAt[#~Reverse~2 &, x, 1], 
   x : (PlotRange -> _) :>
      x~Reverse~2 } &;

Используется как: axisFlip @ g1 или axisFlip @ {g1, g2}


Другой эффект можно получить с помощью Rotate:

Show[g /. x_Line :> Rotate[x, Pi/2, {0,0}], PlotRange -> Automatic]

enter image description here

9 голосов
/ 01 июня 2011
ParametricPlot[{5 Sin[y], y}, {y, -2 \[Pi], 2 \[Pi]}, 
                Frame -> True,  AxesLabel -> {"x", "y"}]

enter image description here


РЕДАКТИРОВАТЬ

Ни один из приведенных ответов не может работать с опцией Filling Plot. Вывод графика содержит GraphicsComplex в этом случае (что, кстати, нарушает замены Mr.Wizard). Чтобы получить возможность заполнения (это не работает для стандартного графика без заполнения), вы можете использовать следующее:

Plot[Sin[x], {x, 0, 2 \[Pi]}, Filling -> Axis] /.  List[x_, y_] -> List[y, x]

enter image description here

Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]}, Filling -> {1 -> {2}}] 
   /. List[x_, y_] -> List[y, x]

enter image description here

8 голосов
/ 01 июня 2011

Одной из возможностей является использование ParametricPlot, например:

ParametricPlot[
  {-y*Exp[-y^2], y}, {y, -0.3, 4},
  PlotRange -> {{-2, 2}, All},
  AxesLabel -> {"x", "y"},
  AspectRatio -> 1/4
]

Example for plot with flipped axes

7 голосов
/ 02 июня 2011

Просто для удовольствия:

ContourPlot является еще одной альтернативой. Использование функции Thies:

ContourPlot[-y*Exp[-y^2/2] - x == 0, 
            {x, -2, 2}, {y, 0, 4}, 
            Axes -> True, Frame -> None]

enter image description here

RegionPlot - это еще один

RegionPlot[-y*Exp[-y^2/2] > x,
           {x, -2.1, 2.1}, {y, -.1, 4.1}, 
           Axes -> True, Frame -> None, PlotStyle -> White, 
           PlotRange -> {{-2, 2}, {0, 4}}]

enter image description here

И, наконец, ДЕЙСТВИТЕЛЬНО извилистым способом с использованием ListCurvePathPlot и Solve:

Off[Solve::ifun, FindMaxValue::fmgz];

ListCurvePathPlot[
 Join @@
  Table[
        {x, y} /. Solve[-y*Exp[-y^2/2] == x, y],
   {x, FindMaxValue[-y*Exp[-y^2/2], y], 0, .01}],
 PlotRange -> {{-2, 2}, {0, 4}}]

On[Solve::ifun, FindMaxValue::fmgz];

enter image description here

Не по теме

Ответ Sjoerd's None of the answers given thus far can work with Plot's Filling option.

Ответить: не обязательно

f={.5 Sin[2 y],Sin[y]};
RegionPlot[Min@f<=x<=Max@f,{x,-1,1},{y,-0.1,2.1 Pi},
  Axes->True,Frame->None,
  PlotRange->{{-2,2},{0,2 Pi}},
  PlotPoints->500] 

enter image description here

5 голосов
/ 02 июня 2011

В зависимости от того, как вы хотите, чтобы метки осей отображались, вы можете просто обернуть код для исходного графика в функцию Rotate.

...