#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.