LINUX.ORG.RU

Matplotlib


0

0

Решил показать работу с matplotlib. Использую связку ipython + numpy + matplotlib + pygsl (binding на gsl) для обработки экспериментов и подготовки иллюстраций.

>>> Просмотр (1440x900, 249 Kb)



Проверено: hibou ()

>Matplotlib

не нужен. Как же я с ним намучился... К тому же они из 0.98, кажется, выкинули 3d.

fizteh
()
Ответ на: комментарий от fizteh

А какова альтернатива? Ищу простую, но мощную замену матлабу, смотрел в сторону Numeric Python, вроде понравилось, но близко не щупал.

decadent
()
Ответ на: комментарий от decadent

на первый взгляд, там все хорошо, а вот если приглядеться, то начинаешь замечать, что matplotlib -- _свалка_. Я нигде (кроме сорсов, конечно) не нашел взаимосвязи между его отдельными частями типа pylab, pyplot...

fizteh
()
Ответ на: комментарий от dn2010

>По сравнению с gnuplotом страшно выглядит.

gnuplot не пользовал, а посему ругать не стану :) По мне, так matplotlib выглядит ОК. Можно быстро построить, посмотреть, да и качество получаемых eps/pdf отличное. Вместе с перечисленными библиотеками заменяет мне matlab на 110%.

boz
() автор топика
Ответ на: комментарий от fizteh

pyplot - функциональный интерфейс к объектно ориентированной matplotlib.

pylab - импортирует все из pyplot + numpy, т.е. если сделать в сессии from pylab import * то получается как бы matlab-синтаксис, собственно оно и сделано для тех кто приходит с matlab. См. http://matplotlib.sourceforge.net/faq/usage_faq.html

Я в сырцах не копался, не до этого как-то. Модуль пользую уже года полтора, библиотека делает ровно то, что мне нужно.

3d - использую редко (если не сказать, что вообще не использую :)). Можно заморочиться и поискать еще какой-нибудь модуль на scipy.org

boz
() автор топика
Ответ на: комментарий от decadent

>А какова альтернатива? Ищу простую, но мощную замену матлабу, смотрел в сторону Numeric Python, вроде понравилось, но близко не щупал.

NumPy - наследник numeric + функционал введенный в альтернативном numarray. Поэтому стоит ставить его. NumPy воодит n-мерные массивы и простейшие операции с ними: почленное сложение, умножение и т.д.

Поверх NumPy можно поставить scipy (scientific python) и pygsl (python bindings to GNU scientific library - GSL in C). В этих модулях найдешь функции линейной алгебры, Фурье преобразования, минимизация, диффуры и т.д.

Теперь, matplotlib умеет строить эти самые массивы.

Если инетересно можешь почитать на

http://scipy.org/

http://matplotlib.sourceforge.net/

http://www.gnu.org/software/gsl/

Могу сказать, что в свое время в течении года пользовал Scilab (http://www.scilab.org/), но как-то корявенько все там было, да и графика тормозила в 4 версиях жутко. Поэтому и мигрировал на python.

Octave меня тоже как-то не вмечатлил.

boz
() автор топика
Ответ на: комментарий от boz

Спасибо. Когда работал в основном с Линуксом, немного игрался и со Scilab, и с Octave. Вторая понравилась больше. Но теперь все больше приходится использовать винды, и наличие под нее питона, скорее всего, и приведет к выбору NumPy.

decadent
()

В левом нижнем углу - пучеглазый робот (:

kapsh
()

Неплохо. К вопросу об альтернативах: gnuplot (Ъ), GD::Graph (perl), pChart (php). К вопросу о словарях. Вот я буду качать qt и половину kde ради какого-то словарика. Когда есть rambler.ru/dict ;).

afiskon
()
Ответ на: комментарий от afiskon

> Вот я буду качать qt и половину kde ради какого-то словарика.

Я плакал. Вы не думали еще удалить GTK+ и Ncurses? А еще можно снести Firefox и пользоваться links. И ядро удалить не забудьте, экономный вы наш.

bmj
()

Для создания отличного качества графиков я бы посоветовал pyxplot [GPLv2]: http://www.pyxplot.org.uk/

Для тех, кто ищет замену матлаб http://www.sagemath.org/ . Вещь очень мощная, к тому-же код можна встраивать в LaTeX : http://ctan.org/tex-archive/macros/latex/contrib/sagetex/

Ну, а когда дело доходит до обработки/визуализации огромного кол-ва данных, то imho для этого ничего лучше CERN ROOT не найти http://root.cern.ch

blinkenlichten
()
Ответ на: комментарий от vyv

>а почему ipython, а не нативный?

ipython хорош как оболочка -- есть автодополнение, история, подсветка. А автор, как я понимаю, с питоном именно в интерактивном режиме работает.

fizteh
()
Ответ на: комментарий от bmj

Так. Давайте разбираться. У меня на машине нет ни Java, ни QT. И мне по возможности не хотелось бы их ставить. Имеете что-то против?

afiskon
()

Странно, что никто в качестве альтернативы не предложил R.

Качество графики в R превосходное, есть вещи, которые нигде больше нельзя построить. Хотя и matplotlib для каких-то вещей хорош.

А gnuplot, в общем, не совсем Ъ, кстати и лицензия там не кошерная.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

более того R легко интегрируется с тиклем и получаются очень легко динамические графики.

psv1967 ★★★★★
()
Ответ на: комментарий от bmj

>Господи, выкиньте наконец это жуткий stardict - курсовую работу безимянного китайского умельца.

В чём собственно ужОс stardict? :)

boz
() автор топика
Ответ на: комментарий от Davidov

>А gnuplot, в общем, не совсем Ъ, кстати и лицензия там не кошерная.

а меня, например, порадовал интерфейс на wxWidgets, особенно быстрое переключение lin/log, grid on/off, replot и прочие мелочи. Да, и в gnuplot (в отличие от scipy) не нужно делать никаких лишних движений для подгонки (fit).

fizteh
()
Ответ на: комментарий от blinkenlichten

>Для создания отличного качества графиков я бы посоветовал pyxplot [GPLv2]: http://www.pyxplot.org.uk/

не позволяет работать интерактивно?

>Для тех, кто ищет замену матлаб http://www.sagemath.org/

Использует те же numpy и matplotlib.

> Ну, а когда дело доходит до обработки/визуализации огромного кол-ва данных, то 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.

boz
() автор топика
Ответ на: комментарий от fizteh

>А автор, как я понимаю, с питоном именно в интерактивном режиме работает. Верно :) ipython использует readline для поиска, автодополнения по tab и т.д. К тому же есть приятный макрос %edit или просто ed. К примеру, можно кинуть на вход что-то вроде "ed 120-134", где 120-134 это номера команд введеных ранее, и ed откроет ваш любимый редактор (vim в моем случае) с данными командами для редактирования. После завершения ipython сразу выполнит исправленный код. Таким же образом можно сохранить уже введеные команды в виде скрипта на будущее.

boz
() автор топика
Ответ на: комментарий от bioreactor

>Графики не наглядные какие то

На скрине обычный рыбочий момент. Для информативности можно добавить всяких комменто, благо matplotlib поддерживает latex.

boz
() автор топика
Ответ на: комментарий от fizteh

>не нужно делать никаких лишних движений для подгонки (fit)

полином: coefs = scipy.polyfit(t, x, deg = 2) t1 = numpy.arange(0,10, 1e-3) x1 = scipy.polyval(coefs, t1)

сплайн: 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 по ним происходит мгновенно, в то время как снова определять коэффициенты отнимает заметное время.

boz
() автор топика
Ответ на: комментарий от FENix

>Дай угадаю: панель -- lxpanel?

Скрин не об этом, но раз спросил. Окружение в чем-то даже скучноватое: openbox, lxpanel, gmrun, fbxkb, stardict, wicd, glipper 0.95.1 (без гномовских замарочек), zim, pcmanfm, roxterm. Шрифты Droid Sans повсюду.

boz
() автор топика
Ответ на: комментарий от boz

я имел в виду leastsq.

scipy:

...
from scipy.optimize import leastsq
def gauss(p,x):
A,x0,w = p
return A*np.exp(-0.5*((x-x0)/w)**2)
def rgauss(p,x,y):
return y - gauss(p,x)
p0=...#инициализация
p = leastsq(rgauss, p0, args=(data_x,data_y))
print p[0]
...

gnuplot:

f(x)=A*exp(-0.5*((x-x0)/w)**2)
...#задание начальных параметров
fit f(x) "data.dat" u 1:2 via A, x0, w


вывод такой -- интуитивно понятнее gnuplot. Конечно, только для не очень сложных вещей.

fizteh
()

\phi по-моему не правильной формы. Нужно \varphi использовать.

А по отображению графиков - вполне нормально. Ничего сверхестественного, но и проблем особых не видно. Не понятно правда, как это выводить в чёрно-белом варианте на печать.

Evgueni ★★★★★
()
Ответ на: комментарий от decadent

>А какова альтернатива? Ищу простую, но мощную замену матлабу

Octave (+гуй QtOctave, но на любителя). Полно разных модулей, расширяющих возможности пакета.

FreeMat. Тоже с синтаксисом матлаба, но есть только базовые возможности, расширений не видел.

Scilab. Синтаксис отличается, но очень похож и есть встроенный конвертер скриптов: matlab -> scilab

Tehnick ★★
()
Ответ на: комментарий от decadent

>Когда работал в основном с Линуксом, немного игрался и со Scilab, и с Octave. Вторая понравилась больше. Но теперь все больше приходится использовать винды

У всех этих свободных пакетов есть сборки под винду.

Tehnick ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.