LINUX.ORG.RU

Вышла библиотека MathGL 1.10 и программа UDAV 0.6

 , , , , , ,


0

0

Платформонезависимая библиотека MathGL предназначена для построения широкого спектра графиков (кривых, поверхностей, поверхностей уровня и т.д.). Есть возможность экспорта графики в растровые (PNG, JPEG) или векторные (EPS, SVG, IDTF) форматы, рисования в консольном режиме и т.д.

Из нового:

  • лицензия изменена на LGPL для ядра библиотеки
  • единообразие классов С++ и Python
  • новый тип графика (BoxPlot)
  • улучшения в рисовании осей (инвертированные оси Min>Max, логарифмические от отрицательных чисел и пр)
  • множество улучшений в языке MGL и в документации
  • ускорение компиляции и пр.

Сайт программы: http://mathgl.sf.net

UDAV — программа построения графиков и изображений на основе скриптового языка MathGL. Поддерживается широкий спектр графиков и функций редактирования данных. Оконный интерфейс (на основе Qt4) позволяет вращать/двигать/приближать графики мышкой и с помощью меню, включать/выключать прозрачность и освещение, смотреть на графики с разных углов зрения (при разных параметрах построения). Из нового:

  • новый интерфейс программы
  • диалог для вставки новой команды
  • калькулятор с множеством спец.функций
  • масса улучшений от MathGL в синтаксисе скриптов MGL
  • возможность вставки имени файла, подобранной формулы и т.д.

Сайт программы: http://udav.sf.net

>>> Подробности

★★

Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 2)

Скачал оценить и моментально наткнулся на баг - область рисования обрезается при любом размере окна.

jcd ★★★★★
()

Долго вбирал для себя графопостроитель и таки остановился на просто Gnuplot, благо к нему есть модуль в Питоне. Кто мне может объяснить, чем это лучше Гнуплота?

Vudod ★★★★★
()

супер, классная прога..
только почему она не использует ресурсы GPU? напр. когда вращаю 3D график - довольно медленно.

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

>Кто мне может объяснить, чем это лучше Гнуплота?

да Gnuplot по-моему лучше ^^

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

Где это? MathGL (библиотека) создает рисунок заданных размеров и размещает график, оси и пр внутри рисунка — никаких окон. UDAV этот рисунок отображает — если размер окна маловат, то появляются области прокрутки.

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

Модуль для питона есть и в MathGL в том числе с поддержкой numpy.

А вот рисования поверхностей и кучи других спец. графиков, использования прозрачности, сглаженного освещения и много другого НЕТУ в gnuplot.

Ну а дальше Вам выбирать: нужен простенький график => тогда gnuplot, хочется что-то более сложное и красивое => тогда MathGL.

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

>Euler works in Windows, or under Linux in Wine. Не хотет. Будет нативная версия - покручу, а пока на йух не надо.

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

Ну, почему бы не сделать какой-нибудь биндинг к CORBA. Вполне бы тебе была бы кобра :)

Displacer ★★
()

Что-то я не могу этот удав собрать потестить. Пишет

qmglcanvas.cpp: In member function ‘virtual void MGLThread::run()’: qmglcanvas.cpp:200: error: ‘class mglGraphAB’ has no member named ‘ObjId’ qmglcanvas.cpp: In member function ‘virtual void QMGLCanvas::mouseDoubleClickEvent(QMouseEvent*)’: qmglcanvas.cpp:230: error: ‘class mglGraphAB’ has no member named ‘OI’ make[1]: *** [qmglcanvas.o] Error 1

Чего мне не хватает?

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

> Кто мне может объяснить, чем это лучше Гнуплота?

Поверхности и векторные поля лучше гнуплота делает. Объёмы гнуплот вообще не умеет, к сожалению

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

> Бля, есть же Euler

Слишком толсто. Бледнейшее подобие гнуплота, судя по демкам.

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

> В общем, судя по всему, octave и gnuplot ничем не хуже.

Останусь с ними.

Я использую и gnuplot, и matplotlib, и MathGL в зависимости от задачи. У всех есть вкусности, не перекрываемые остальными двумя.

Const
()

"...широкого спектра..."

Точечный, остаточный, непрерывный, дискретный... Что такое широкий спектр?

anonymous
()

Спасибо автору за отличную программу. Делал с ее помощью графики для диссертации и различных отчетов. Когда пробовал gnuplot - не осилил UTF-8 в графиках, с тех пор пользуюсь MathGL и вполне доволен. С помощью UDAV удобно создавать анимированные графики. Вот пример ролика, сделанного буквально за пару дней с помощью UDAV — http://www.youtube.com/watch?v=UUE1s7Rv1f0

anonymous
()

Поигрался с UDAV, программка интересная, автору Спасибо.
Но, покопавшись в хелпах и экзамплах, так и не разобрался, есть ли возможность автоматической нумерации шага на оси?

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

Нет, но если привыкли к gnuplot'у, то слегка непривычно ... переучиваться многим лень

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

Не совсем понял что имеется в виду. Есть автоматические размеры осей по массивам данных ([xyzc]range), есть автоматическая расстановка меток (adjust или axis 'xyz' on), есть точная настройка меток ([xyz]tick). А вообще можно посмотреть раздел справки 2.8. Axis settings.

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

«Широкий спектр» — словосочетание обозначающее большое разнообразие эффектов, типов, устройств и т.д.

В MathGL более 50 типов БАЗОВЫХ графиков, начиная от простейших кривых и поверхностей, и кончая довольно экзотическими графиками на треугольной сетке, статистическими или графиками в тернарной системе координат.

Любой из этих типов можно комбинировать — например, линии тока с графиком плотности амплитуды, или линии уровня с поверхностью. В других системах (Matlab) такие «комбинированные» графики сами считаются базовыми. Как еще назвать такое разнообразие :)

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

Не совсем понял что имеется в виду. Есть автоматические размеры осей по массивам данных ([xyzc]range), есть автоматическая расстановка меток (adjust или axis 'xyz' on), есть точная настройка меток ([xyz]tick). А вообще можно посмотреть раздел справки 2.8. Axis settings.

Axis settings я смотрел, не помогает. Если на примере, вот я рисую синус. Если вводить просто «axis», на графике вдоль оси x появляются числа -1,-0.5 итд. Если вводить «axis -2 -1 3 1», числа не выводятся. При этом точная настройка через «xtick 1.2 '1.2'» меняет расположение метки, но текст под ней не выводит. А в описании adjust не разобрался.

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

Команда axis может использоваться как для рисования осей координат (если аргумента нет или один текстовый аргумент), так и для задания размера осей координат (если в аргументах 4 или 6 чисел), а также для задания криволинейных координат (2-3 строки или 1 число). В последних двух случаях оси не выводятся — только задаются размеры или формулы преобразования.

Команда [xyz]tick может задавать число меток или шаг меток, либо указывать метки явным образом. В вашем случае скрипт «axis -2 -1 3 1:xtick 1.2 '1.2':axis» выведет 5 меток (значение по умолчанию) по оси y (это -1, 0, 1, 2, 3) и 1 метку по оси х (это 1.2 — другие не указаны).

Командой adjust пользоваться просто — вызовите ее после указания размера осей и перед рисованием осей координат. Например «axis -2 -1 3 1:adjust:axis» выведет 5 меток по оси y и 6 меток по оси х + «подметки». Можно сделать проще «axis -2 -1 3 1:axis 'xy' on».

abalakin ★★
() автор топика

Судя по их сайту MathGL - интересная вещь, сейчас попробую.

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

Команда axis может использоваться как для рисования осей координат (если аргумента нет или один текстовый аргумент), так и для задания размера осей координат (если в аргументах 4 или 6 чисел), а также для задания криволинейных координат (2-3 строки или 1 число). В последних двух случаях оси не выводятся — только задаются размеры или формулы преобразования.

Вот в чем проблема была, не догадался вызвать axis второй раз. Спасибо за разъяснения.

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

- ты, веришь, что это будет жить?
- почему GL? why not Direct3D/Direct2D
- один человек не воин
- зачем ещё один интерппрпрпрпретатоор, когда есть Ц/Ц++\


почему молчишь? :(

Valeriy_Onuchin ★★
()

Здорово, молодцы :)

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

По видимому вопросы мне :)

ты, веришь, что это будет жить?

Ответ ДА, как и год назад ;) . MathGL и UDAV очевидно будут жить и развиваться, т.к. это мои рабочие инструменты — а бросать научную деятельность у меня в планах нет.

почему GL? why not Direct3D/Direct2D

«GL» — graphic library, а совсем не OpenGL. Да в библиотеке есть интерфейс для OpenGL, но это всего лишь один из 4-х способов отрисовки. Использование Direct3D/Direct2D тут явно не подходит — теряется кроссплатформенность. Хотя никто не мешает написать производный класс и реализовать отрисовку на Direct3D/Direct2D.

один человек не воин

Во-первых уже не один ;). Во-вторых большинство проектов «завязаны» на одном человеке, определяеющем архитектуру, дальнейшее развитие и пр. А в-третьих пока хватает ... почти ... Есть конечно «проблеммы» — малое число протестированных интерфейсов (ну не знаю я достаточно хорошо многие языки), не все фичи реализуются быстро (то же чтение файлов DICOM :( ).

зачем ещё один интерппрпрпрпретатоор, когда есть Ц/Ц++\

Он и остался, еще есть питон и октаве ... Только при рисовании графика удобнее все равно команды, а не высокоуровневый язык. Характерный пример — PostScript.

Если надо только построить график и провести минимальную обработку данных (обрезать, транспонировать, сгладить, взять фурье, подогнать и пр), то командный язык MGL идеален. Ну а если надо что-то большое посчитать, построить пользовательски интерфейс и т.д., то уж тут не обойтись без С/С++/Питона/...

почему молчишь? :(

Обычно по ночам люди спят ;)

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

Мдэ. Вообще, вы знаете что было бы реально в тему? Если бы где-нибудь на сайте был список пакетов и библиотек, которые нужны для того, чтобы собрать. Я себе собрал mathgl 1.10 из исходников (в репозитории была только 1.8.5), поставил libhdf5, но udav всё равно не собирается. На этот раз вот такая ошибка:

finddialog.o: In function `CalcDialog::evaluate()': finddialog.cpp:(.text+0xb864): undefined reference to `mglFormulaCalc(wchar_t const*, mglParse*)' qmglsyntax.o: In function `QMGLSyntax::highlightBlock(QString const&)': qmglsyntax.cpp:(.text+0x58c): undefined reference to `mglParse::FindCommand(wchar_t const*, bool)' qmglsyntax.cpp:(.text+0x5e4): undefined reference to `mglParse::FindCommand(wchar_t const*, bool)' scriptmenu.o: In function `ScriptWindow::insNVal()': scriptmenu.cpp:(.text+0x5c56): undefined reference to `mglFormulaCalc(wchar_t const*, mglParse*)' newcmddialog.o: In function `getCmd(QString const&)': newcmddialog.cpp:(.text+0xbd): undefined reference to `mglParse::FindCommand(wchar_t const*, bool)' newcmddialog.cpp:(.text+0xf4): undefined reference to `mglParse::FindCommand(wchar_t const*, bool)' collect2: ld returned 1 exit status

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

Неявно предполагается, что в UDAV используется последняя версия MathGL — это версия 1.10. Ее надо собрать из исходников, установить и возможно выполнить «sudo ldconfig» (зависит от системы).

К сожалению, зависимости для удава в qmake прописывать не умею :( (если вообще можно). В MathGL все требуемые библиотеки выводятся при конфигурации — рекомендую посмотреть "./configure --help" для доп. опций.

Для HDF5 нужна естественно версия libhdf5*-dev, а уж какую из них ставить Вам решать — если не занимаетесь кластерными вычислениями, то скорее всего serial.

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

Да, вот чего не хватало - ldconfig-а :) И ещё, похоже, надо было убить ту версию mathgl, которая шла из репозиториев. Теперь всё работает, но математики обычно ещё большие ламера чем я, так что неплохо бы сделать детальную документацию, как это ставить.

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