Решил показать работу с matplotlib. Использую связку ipython + numpy + matplotlib + pygsl (binding на gsl) для обработки экспериментов и подготовки иллюстраций.
на первый взгляд, там все хорошо, а вот если приглядеться, то начинаешь замечать, что matplotlib -- _свалка_. Я нигде (кроме сорсов, конечно) не нашел взаимосвязи между его отдельными частями типа pylab, pyplot...
gnuplot не пользовал, а посему ругать не стану :) По мне, так matplotlib выглядит ОК. Можно быстро построить, посмотреть, да и качество получаемых eps/pdf отличное. Вместе с перечисленными библиотеками заменяет мне matlab на 110%.
pyplot - функциональный интерфейс к объектно ориентированной matplotlib.
pylab - импортирует все из pyplot + numpy, т.е. если сделать в сессии from pylab import * то получается как бы matlab-синтаксис, собственно оно и сделано для тех кто приходит с matlab. См.
http://matplotlib.sourceforge.net/faq/usage_faq.html
Я в сырцах не копался, не до этого как-то. Модуль пользую уже года полтора, библиотека делает ровно то, что мне нужно.
3d - использую редко (если не сказать, что вообще не использую :)). Можно заморочиться и поискать еще какой-нибудь модуль на scipy.org
>А какова альтернатива? Ищу простую, но мощную замену матлабу, смотрел в сторону Numeric Python, вроде понравилось, но близко не щупал.
NumPy - наследник numeric + функционал введенный в альтернативном numarray. Поэтому стоит ставить его. NumPy воодит n-мерные массивы и простейшие операции с ними: почленное сложение, умножение и т.д.
Поверх NumPy можно поставить scipy (scientific python) и pygsl (python bindings to GNU scientific library - GSL in C). В этих модулях найдешь функции линейной алгебры, Фурье преобразования, минимизация, диффуры и т.д.
Теперь, matplotlib умеет строить эти самые массивы.
Могу сказать, что в свое время в течении года пользовал Scilab (http://www.scilab.org/), но как-то корявенько все там было, да и графика тормозила в 4 версиях жутко. Поэтому и мигрировал на python.
Спасибо. Когда работал в основном с Линуксом, немного игрался и со Scilab, и с Octave. Вторая понравилась больше. Но теперь все больше приходится использовать винды, и наличие под нее питона, скорее всего, и приведет к выбору NumPy.
Неплохо.
К вопросу об альтернативах: gnuplot (Ъ), GD::Graph (perl), pChart (php).
К вопросу о словарях. Вот я буду качать qt и половину kde ради какого-то словарика. Когда есть rambler.ru/dict ;).
>А gnuplot, в общем, не совсем Ъ, кстати и лицензия там не кошерная.
а меня, например, порадовал интерфейс на wxWidgets, особенно быстрое переключение lin/log, grid on/off, replot и прочие мелочи. Да, и в gnuplot (в отличие от scipy) не нужно делать никаких лишних движений для подгонки (fit).
> Ну, а когда дело доходит до обработки/визуализации огромного кол-ва данных, то imho для этого ничего лучше CERN ROOT
На первый взгляд неплохо, правда:
With ROOT we try to provide a basic framework that offers a common set of features and tools for all domains of High Energy Physics computing.
>А автор, как я понимаю, с питоном именно в интерактивном режиме работает.
Верно :) ipython использует readline для поиска, автодополнения по tab и т.д. К тому же есть приятный макрос %edit или просто ed. К примеру, можно кинуть на вход что-то вроде "ed 120-134", где 120-134 это номера команд введеных ранее, и ed откроет ваш любимый редактор (vim в моем случае) с данными командами для редактирования. После завершения ipython сразу выполнит исправленный код. Таким же образом можно сохранить уже введеные команды в виде скрипта на будущее.
сплайн:
tck = scipy.interpolate.splrep(t, x, s = 0)
# s - степень сглаживание. 0 - без сглаживания.
x1 = scipy.interpolate.splev(t1, tck)
Если лень писать две строчки, то можно сделать функцию
def fit(t1, t, x, deg = 2, spline = 'no'): ...
Но при этом теряется гибкость. Например, у меня вектора t и x по 1e6 элементов. Я посчитал коэффициенты один раз. Выбрал вектор t1 таким-то, но через 10 минут понял что хочу на самом деле взять t2. Поскольку у меня есть промежуточный результат (coef или tck), то оценка x1 по ним происходит мгновенно, в то время как снова определять коэффициенты отнимает заметное время.
Скрин не об этом, но раз спросил. Окружение в чем-то даже скучноватое: openbox, lxpanel, gmrun, fbxkb, stardict, wicd, glipper 0.95.1 (без гномовских замарочек), zim, pcmanfm, roxterm. Шрифты Droid Sans повсюду.
\phi по-моему не правильной формы. Нужно \varphi использовать.
А по отображению графиков - вполне нормально. Ничего сверхестественного, но и проблем особых не видно. Не понятно правда, как это выводить в чёрно-белом варианте на печать.
>Когда работал в основном с Линуксом, немного игрался и со Scilab, и с Octave. Вторая понравилась больше. Но теперь все больше приходится использовать винды
У всех этих свободных пакетов есть сборки под винду.