построение графика по оси y в Mathematica

#function #wolfram-mathematica #plot

#функция #wolfram-mathematica #построение графика

Вопрос:

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

Я надеюсь, что рисунок поможет.

введите описание изображения здесь

Комментарии:

1. У меня есть обновление моего ответа на случай, если вам понадобится Filling опция.

Ответ №1:

 ParametricPlot[{5 Sin[y], y}, {y, -2 [Pi], 2 [Pi]}, 
                Frame -> True,  AxesLabel -> {"x", "y"}]
  

введите описание изображения здесь


Редактировать

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Комментарии:

1. @Thies Там просто джунгли 😉

2. @Thies и, по-видимому, это не помогает быть первым (даже всего на 2 минуты). Ваш запрос принят.

3. @Sjoerd Я знал, что навык обратного проектирования функций когда-нибудь пригодится 😉

4. Я уже голосовал за это, поэтому не могу проголосовать еще раз, но хорошее обновление!

5. @Sjoerd тщательно избегаемые области измеряют ноль в моей линейке Лебега

Ответ №2:

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

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

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

введите описание изображения здесь

С небольшим изменением это работает и для графиков, использующих 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] amp; /@ {g1, g2}
  

введите описание изображения здесь

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


Как функция

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

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

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


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

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

введите описание изображения здесь

Комментарии:

1. 1 Я чувствую, что версия, которая включает заполнение, должна быть окончательным ответом. Версия Rotate неверна так же, как и у Алексея: неправильный знак y.

Ответ №3:

Одна из возможностей заключается в использовании ParametricPlot такого:

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

Пример для построения графика с перевернутыми осями

Ответ №4:

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

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

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

введите описание изображения здесь

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}}]
  

введите описание изображения здесь

И, наконец, ДЕЙСТВИТЕЛЬНО запутанный способ с использованием 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];
  

введите описание изображения здесь

Не по теме

Ответ на вопрос Сьер 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] 
  

введите описание изображения здесь

Комментарии:

1. Я тоже думал об RegionPlot этом, но синтаксис для этого отличается от Plot и более сложный. Более привычно иметь возможность просто добавлять: Filling -> True

2. @Mr. True! Но это всего лишь небольшая шутка, которой мы наслаждаемся с Sjoerd 🙂

3. Да, @mr.Wizard, не порть нам веселье. Это наша битва умов.

4. @Sjoerd Ты не должен смеяться над моими усилиями. Сейчас я изучаю AxesStyle -> Thickness[.1] с очень хорошими результатами

Ответ №5:

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