Что ж, с некоторой поддержкой от Велисария вот мой комментарий в качестве ответа: попробуйте посмотреть на matplotlib . С домашней страницы:
matplotlib - это библиотека 2D-черчения Python, которая генерирует показатели качества публикаций в различных печатных форматах и интерактивных средах на разных платформах. Matplotlib может использоваться в скриптах python, оболочке python и ipython (ala MATLAB® * или Mathematica® †), серверах веб-приложений и шести наборах инструментов графического интерфейса пользователя.
Первоначально он был вдохновлен возможностями черчения MATLAB, хотя с тех пор он сильно вырос. Это твердое программное обеспечение - и это с открытым исходным кодом, под лицензией BSD, поэтому вы можете не только читать исходный код, но и взламывать его и использовать по своему усмотрению.
Еще одно место, которое вы можете посмотреть, это gnuplot . Это не одна из распространенных лицензий с открытым исходным кодом, но это, безусловно, с открытым исходным кодом, с некоторыми разрешениями на изменение и тому подобное.
Gnuplot - это портативная графическая утилита, управляемая из командной строки, для Linux, OS / 2, MS Windows, OSX, VMS и многих других платформ. Исходный код защищен авторским правом, но распространяется свободно (т. Е. Вам не нужно за него платить). Первоначально он был создан, чтобы позволить ученым и студентам интерактивно визуализировать математические функции и данные, но теперь он поддерживает многие неинтерактивные приложения, такие как веб-сценарии. Он также используется в качестве средства построения графиков сторонними приложениями, такими как Octave. Gnuplot поддерживается и активно развивается с 1986 года.
Он также выполняет 3D-черчение, чего не делает matplotlib, и он существует намного дольше. Причина, по которой я сначала подумал о matplotlib, заключается в том, что он предназначен как библиотека для языка более высокого уровня, а не как отдельное приложение, поэтому я предполагаю, что вам будет немного легче его читать.
Еще одно предложение, просто чтобы получить представление о том, что Mathematica делает под капотом, - взглянуть на документацию для Plot . В частности, если вы посмотрите на доступные варианты, вы можете сделать вывод.
MaxRecursion
Automatic
максимально допустимое количество рекурсивных подразделений
Method
Automatic
метод, используемый для уточнения кривых
PerformanceGoal
$PerformanceGoal
аспекты производительности, чтобы попытаться оптимизировать
PlotPoints
Automatic
начальное количество точек выборки
Из MaxRecursion
и PlotPoints
вы можете видеть, что он выполняет начальную выборку, а затем каким-то образом решает, какие регионы необходимо подразделить (пересчитать), чтобы получить точное представление о графике. И с этого момента, это волшебство: есть некоторые Method
для этого и PerformanceGoal
, чтобы направлять это ...