Как сделать легенду на графике в wolfram mathematica

Добавил пользователь Евгений Кузнецов
Обновлено: 07.09.2024

3d графика и анимация в JS
Подскажите в каком направлении думать. Фронт проекта будет писаться на JS, в проекте.

Графика-анимация
Помогите пожалуйста с заданием! Написать Windows-приложение, которое выполняет анимацию.

Графика. Анимация
анимацию еще углубленно не проходили так что если кто может, сделайте программу в которой шарик.

Этот вариант я использую, когда функция слишком тяжелая, чтоб сначала вычислились все кадры, а только затем они анимировались

Animate работает как Table : можно написать , где xlist — список значений для x1 .
ListAnimate принимает список кадров, при формировании которых можно использовать не Range[1,5] , а произвольный xlist .
Наконец, обе функции имеют контроль времени: DefaultDuration , определяющее время одного пробега у Animate , и второй формальный аргумент ListAnimate , определяющий количество фреймов за секунду.

Как вы рисуете легенды для функций без использования пакета PlotLegends?

3 ответа

Я тоже был разочарован трудностью заставить PlotLegend работать правильно. Я написал свою собственную краткую функцию, чтобы сделать свои собственные легенды фигур:

Он гибкий, но не очень простой в использовании. "names" - это список строк для рендеринга в легенде; "Маркеры" - это список с такой же длиной, как "имена" объектов Graphics, представляющих маркеры графики или графику для рендеринга; "origin" - это двухэлементный список с абсолютным горизонтальным и вертикальным расположением верхнего левого угла легенды; "markerSize" - это количество точек для масштабирования маркеров; "fontSize" - размер шрифта; "font" - это имя используемого шрифта. Вот пример:

generated image

Мне также очень хотелось бы ответить на этот вопрос.

Чтобы рассказать вам, что не так с PlotLegends: он ужасно нестабилен и во многих случаях вообще не работает.

Вот пример, где PlotLegends полностью завинчивается. Выход из Mathematica 7.0:

Предположим, что мы измерили некоторые точки данных, соответствующие ряду функций, и хотим показать, насколько хорошо они сравниваются с идеальной функцией, или, может быть, насколько хорошо они соответствуют расчетному подходу. Нет проблем! Мы просто покажем [] плавный график вместе с ListPlot точек данных, правильно?

Он может выглядеть примерно так:

alt text

alt text

Это выглядит БОЛЬШИМ! Опубликуйте немедленно!

Для такой базовой и повсеместно необходимой функциональности, конечно, было много работы, чтобы найти альтернативу PlotLegend, которая просто работает. Лучшая альтернатива, которую я нашел до сих пор, заключалась в том, чтобы тщательно составить список сюжетных стилей, затем построить легенду вручную и, наконец, показать ее вместе с сюжетом с помощью ShowLegend []. (См. Например здесь) Возможно, но много работы.

Итак, если кто-нибудь знает об обходном пути, чтобы заставить PlotLegend работать, альтернативный пакет, который работает лучше, или просто аккуратный способ получить легенды, которые можно легко автоматизировать, я был бы очень благодарен! Это, безусловно, сделало бы жизнь немного легче.

1 Nick W [2012-07-14 08:25:00]

Если вы испытываете странное поведение, описанное Джеймсом. Когда вы пытаетесь использовать "Показать" для объединения двух изображений, вам следует поиграть с использованием функции "Overlay" вместо "Show".

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

Если он выглядит немного глупым, имея две легенды, вы можете удалить его со второго рисунка, используя следующие опции:

Это создает пустую и невидимую легенду, но по-прежнему позволяет правильно скомпоновать две графики с помощью "Показать" .

Графические возможности Mathematica настолько широки, что позволяют создавать не только статические изображения, но и анимированную графику. Принцип создания анимации следующий: генерируется последовательность изображений (кадров), которые отличаются друг от друга значениями некоторого параметра, затем полученные кадры последовательно воспроизводятся.

Функция программы, которая позволяет создавать анимацию — Animate . Заданная в виде Animate[plot,] функция анимирует изображение plot в зависимости от параметра u , непрерывно меняющегося в пределах от umin до umax . Изображение plot может быть построено при помощи уже известных нам двумерных и трёхмерных графических функций. Пример создания анимации приведён на рис. 7.16: в Out[1] мы получили окно, включающее в себя изображение, полученное при помощи функции Plot , а также панель управления воспроизведением. На панели воспроизведения (слева направо) имеется ползунок, показывающий значение параметра u , при котором в данный момент построен рисунок (ползунок можно также двигать самостоятельно при помощи мышки), кнопка Play/Pause для запуска и остановки воспроизведения, кнопки увеличения и уменьшения скорости воспроизведения и кнопка изменения направления воспроизведения.

Создание анимации в Mathematica

При задании функции в виде Animate[plot,] параметр u меняется дискретно с промежутком d между соседними значениями. Параметр u может принимать значения, заданные пользователем самостоятельно. Для этого второй аргумент функции задаётся в виде вложенного списка > .

Меняться может сразу несколько параметров. В этом случае функция задаётся в виде Animate[plot,,. ] .

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

Если задать функцию без дополнительных опций, то сразу же после осуществления вычисления анимация начинает воспроизводиться. Для того чтобы сразу после вычисления изображение оставалось статичным, а движение начиналось лишь после нажатия пользователем на кнопку Play , требуется задать опцию AnimationRunning->False .

Опция AnimationDirection задаёт направление изменения параметра u , от которого строится анимированная зависимость. По умолчанию она задана в виде AnimationDirection->Forward , и параметр u меняется от umin до umax . По достижении u значения umax анимация начинается сначала. Если задать опцию в виде AnimationDirection->Backward , u будет меняться от umax до umin . При присвоении опции значения ForwardBackward сначала u меняется от umin до umax , а по достижении значения umax — в обратную сторону, от umax до umin .

Относительная скорость анимации v определяется задающейся в следующем виде опцией AnimationRate->v . По умолчанию значение v равно 1 .

Cos[a*x]+Cos[b*y]

На рис. 7.17 мы создали анимацию функции двух переменных x и y с изменяющимися параметрами a и b . При этом мы отключили автоматический старт анимации, AnimationRunning->False , уменьшили скорость воспроизведения анимации, AnimationRate->0.2 , а также вынудили параметры a и b сначала изменяться от меньшего значения к большему, а затем в обратную сторону, AnimationDirection->ForwardBackward .

Подробней о функции Animate и её опциях см. книгу В. П. Дьяконова [2, с. 461–464].

Изменение особенностей воспроизведения анимированных объектов при помощи опций

Cos[d*x]

Если изображения, которые могут стать кадрами анимационного ролика, созданы заранее (например, оформлены в виде списка), то совместить их в одном ролике позволит функция ListAnimate . На рис. 7.18. мы объединили в ролике пять графиков функции при разных значениях d , в результате получили анимацию, последовательно воспроизводящую пять кадров.

Создание анимационного ролика из заранее сгенерированных кадров

Более широкими возможностями по сравнению с Animate обладает функция Manipulate . Применённая к некоторому выражению expr , зависящему от параметра u , функция Manipulate[expr,] вычисляет значение выражения expr при установленном значении u . Значение u можно менять в ячейке Out[. ] , перетаскивая ползунок, либо вводя требуемое число в специальное поле в панели воспроизведения, появляющееся сразу после начала воспроизведения непосредственно под ползунком. Кроме того, можно наблюдать за изменением значения выражения expr , запустив автоматическое изменение параметра u в пределах от umin до umax при помощи Play .

На рис. 7.19 мы привели в качестве примера вычисление значения функции x*Sin[x] при интерактивно задаваемом x .

Вычисление выражения, зависящего от интерактивно задаваемого аргумента

Аргументы функции Manipulate задаются тем же способом, что и аргументы Animate : параметр может принимать непрерывные и дискретные значения, можно одновременно задавать несколько параметров. Кроме того, функция может быть задана в виде Manipulate[expr,,umin,umax>] : тогда сразу после вычисления u принимает значение uinit , а не umin .

В качестве первого expr функции Manipulate может выступать функция построения изображения: именно поэтому мы рассматриваем эту функцию именно в данной лекции. В этом случае Manipulate будет представлять собой расширенную версию функции Animate , поскольку, обладая всеми её возможностями, функция Manipulate позволяет ещё и вручную задавать значения параметра, а также визуализирует его текущее значение .

На рисунке 7.20 мы применили Manipulate к функции построения той же зависимости, что и на рис. 7.17. Как мы видим, теперь в Out[1] у нас появились дополнительные инструменты для отображения и задания значений параметров функции a и b .

Подробней о функции Manipulate и её опциях см. книгу В. П. Дьяконова [2, с. 512–513].

Функция Manipulate как расширенная альтернатива функции Animate

Если задаётся сразу несколько параметров манипуляции, то значения одного параметра могут зависеть от значений другого. Так на рис. 7.21 мы строим функцию Sin[a*x+b] , имеющую два параметра — a и b . При этом границы изменения параметра b зависят от значения параметра а : параметр b может принимать значения от a до 5*а . В Out[1] на рис. 7.21 мы задали значение a=2.5 и выставили максимальное значение b , которое при данном a оказалось равно 12.5 .

Функция Manipulate. Задание зависимых параметров манипуляции

Краткие итоги

В данной лекции мы значительно расширили наши знания в области визуализации математических зависимостей средствами встроенной графики Mathematica. В частности, мы познакомились с основными графическими функциями Mathematica для визуализации явных и параметрических зависимостей от двух и трёх переменных, научились изменять внешний вид рисунков при помощи необязательных аргументов графических функций — опций. Мы познакомились с трёхмерными графическими примитивами, правилами их задания и применения. Мы также научились визуализировать динамические изображения путём создания анимированных изображений.

Вопросы

  1. Какой символ содержится в заголовке всех функций Mathematica, предназначенных для работы с трёхмерной графикой?
  2. Назовите функции Mathematica, предназначенные для визуализации непрерывных и дискретных математических зависимостей. Какие аргументы они содержат?
  3. В каких случаях функция ParametricPlot3D строит поверхность, а в каких — кривую в трёхмерном пространстве?
  4. Назовите опции двумерных графических функций, которые также используются при работе с трёхмерной графикой.
  5. Для каких целей используются следующие опции?
    • Boxed;
    • BoxRatios;
    • ColorFunction;
    • ViewPoint;
    • Mesh;
    • MeshStyle.

Упражнения

При помощи опции BoxRatios преобразуйте рисунок так, чтобы изображённая на нём поверхность визуально воспринималась как

  • эллипсоид, вытянутый вдоль оси ординат;
  • диск на плоскости, образованной осями абсцисс и аппликат.

Окрасьте кривую в цвета радуги, используя соответствующую цветовую схему.

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

Используя только примитив "труба", нарисуйте каркас тетраэдра, куба, октаэдра.


В двух предыдущих примерах мы задавали область значений аргумента х. А что будет, если мы не будем задавать область значений х?


Одной из уникальных особенностей Wolfram | Alpha является автоматический выбор подходящего диапазона х для построения графиков функций одной и двух переменных, например, как при построении графика этой функции, содержащей функции Бесселя:


Обращаясь к Wolfram | Alpha, чтобы построить график функции, мы всегда используем префикс plot. Если же мы введем какое-либо одномерное выражение без префикса plot, то получим кроме графика функции в прямоугольных декартовых координатах, еще и много других сведений об этой функции.



Кроме того, изображение построенного графика будет крупнее, если вы используете префикс plot.

Одновременно в Wolfram | Alpha можно строить графики нескольких функций.


Если навести мышь на левый нижний угол изображения, то становятся доступными две ссылки: Save as image и Copyable planetext. Рассмотрим такой график:


Первая ссылка Save as image, которая открывается в левом нижнем углу изображения, позволяет сохранить построенный график, как картинку на компьютере пользователя - при нажатии на Save as image автоматически начнется загрузка изображения:

Вторая ссылка Copyable planetext позволяет увидеть код, аналогичный тому, который используется системой Matematica для построения графиков:


Теперь рассмотрим, как в Wolfram | Alpha построить графики функций двух переменных. Начнем с функции y^2 cos(x) для x от -6 до 6 и y от -2 до 2



Все трехмерные графики строятся с помощью функции plot3d системы Mathematica. Контурные графики были сделаны с помощью ContourPlot. В обоих случаях, чтобы увидеть код системы Mathematica для генерации изображения нужно нажать ссылку Copyable planetext в левом нижнем углу нужного изображения.

Больше информации по использованию Wolfram|Alpha вы найдете в блоге

Читайте также: