LINUX.ORG.RU

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

 , , , , udav, , ,


0

2

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

Из нового:

  • новые типы графиков;
  • новые стили линий и маркеров;
  • выравнивание subplot/colorbar/legend;
  • возможность загрузки/сохранения сжатых файлов (шрифты, данные, SVG, EPS и другие форматы);
  • подпрограммы и прочие улучшения в MGL;
  • перевод большей части документации на русский язык.

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

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

Из нового:

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

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

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

★★

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

А там можно интерактивно и независимо менять масштаб и пределы осей? Чтобы не как в гнуплоте, через отдельные команды.

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

> А чем оно лучше WinAMP?

за основу взят код foobar2000

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

> А есть какие-нибудь конкретные преимущества по сравнению с gnuplot?

На картинки посмотри :) Они местами более красивые.

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

> > А есть какие-нибудь конкретные преимущества по сравнению с gnuplot?

На картинки посмотри :) Они местами более красивые.

И их больше. Gnuplot почти не умеет рисовать графики для 2D (матриц) и 3D данных.

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

> а как у неё с производительностью? скорость matplotlib'а угнетает.

Ядро библиотеки написано на С++ так, что скорость хорошая (см. http://mathgl.sourceforge.net/timetable.html — табличка конечно старая, но по скорости почти ничего не менялось)

вывод в LaTeX поддерживает?

Да в большей части — http://mathgl.sf.net/mathgl_ru/mathgl_ru_5.html#Font-styles

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

Алексей, справедливости ради: gnuplot 4.4 весьма неплохо поверхности рисует (то, что вы 2D обозначили). Ваш MathGL выигрывает не этим. Он умеет представлять объём (3D — тут просто нет конкурентов), полупрозрачность по потребности (иногда зело полезно) и вектора неплохо даёт. Хотя по векторам мне более matplotlib нравится. Так и приходится всеми инструментами пользоваться ;)

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

> А чем оно лучше matplotlib?

Большего типов графиков (особенно для 2D и 3D массивов данных), быстрее (написана на С++ — компилируемом языке), больше стилей линий/маркеров/текста, вывод в ТеХ, загрузка/импорт данных из разных форматов, текстовые формулы, криволинейные координаты и пр. (см. http://mathgl.sourceforge.net/mathgl_ru/mathgl_ru_3.html#MathGL-features)

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

> А там можно интерактивно и независимо менять масштаб и пределы осей? Чтобы не как в гнуплоте, через отдельные команды.

Можно http://mathgl.sourceforge.net/mathgl_ru/mathgl_ru_19.html#Axis-settings

Интерактивно сложнее — частично можно в удаве.

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

> Алексей, справедливости ради: gnuplot 4.4 весьма неплохо поверхности рисует (то, что вы 2D обозначили). Ваш MathGL выигрывает не этим. Он умеет представлять объём (3D — тут просто нет конкурентов), полупрозрачность по потребности (иногда зело полезно) и вектора неплохо даёт. Хотя по векторам мне более matplotlib нравится. Так и приходится всеми инструментами пользоваться ;)

По примерам на сайте gnuplot — хорошо рисует сетчатые поверхности, линии уровня и довольно «коряво» поверхности с заполнением (без интерполяции цвета — аналог mglGraphPS в MathGL — экспорт в векторный EPS/SVG).

А что не хватает с векторами? можно пример картинки?

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

> По примерам на сайте gnuplot — хорошо рисует сетчатые поверхности, линии уровня и довольно «коряво» поверхности с заполнением (без интерполяции цвета — аналог mglGraphPS в MathGL — экспорт в векторный EPS/SVG).

Замечательно рисует поверхности с заполнением. Почему нет адекватных примеров на сайте? не знаю, но после просмотра их примеров в документации (10-15 минут заняло), делаю прекрасные поверхности, могу пару примеров кинуть.

А что не хватает с векторами? можно пример картинки?

Даже не скажу чего не хватает, вроде всё на месте. Общее моё (моё личное) эстетическое впечатление.

Const
()

хорошая новость, очень хорошая

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

Большое спасибо за библиотеку :) пользуюсь.

Было бы кстати классно, если бы была возможность рисовать сразу на кайро-поверхность или как там она называется. Чтобы не приходилось перегонять через битмап для вставки в ГТК приложение. Скорость наверное бы резко увеличилась. имхо конечно.

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

> скорость matplotlib'а угнетает

Да, он действительно не слишком шустрый. И если сам график строится приемлемое время, то управление уже нарисованным сложным графиком просто невозможно из-за тормозов и постоянной перерисовки. А жаль, очень мощная штука.

pevzi ★★★★★
()

Программа конечно хорошая, но у меня каждый раз попытка её использования проваливалась. То не ясно как подложку под картинку сделать, то не находятся тривиальные вещи типа построения траектории по последовательности из 3х координат, поэтому я каждый раз возвращался на gnuplot.

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

Ну, это традиционная проблема вхождения. У gnuplot тоже порог нехилый, — по начинающим хорошо заметно. Собственно, я сам скорее «гнуплотист», ибо что matplotlib со словарём, что MathGL — любой шаг от наезженной колеи сложен оказывается. ;)

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

> UDAV не на python, случаем, написан?

Нет. C++ и Qt

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

> Почему рендерится не cairo'ом?

Из-за переносимости — MathGL можно использовать под любой системой. В том числе и без Х-ов. Например, при построении картинок непосредственно на кластере.

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

> Программа конечно хорошая, но у меня каждый раз попытка её использования проваливалась. То не ясно как подложку под картинку сделать, то не находятся тривиальные вещи типа построения траектории по последовательности из 3х координат, поэтому я каждый раз возвращался на gnuplot.

Что есть подложка? Фоновый рисунок? Если да, то берете GetRGBA() массив из MathGL и накладываете на любой фон. Большинство оконных библиотек умеет это делать.

А такой код не пробовали:

mglData tr(«fname.dat»); gr->Plot(tr.SubData(0),tr.SubData(1),tr.SubData(2));

или на MGL

read a 'fname.dat':plot a(0) a(1) a(2)

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

> > А что не хватает с векторами? можно пример картинки?

Даже не скажу чего не хватает, вроде всё на месте. Общее моё (моё личное) эстетическое впечатление.

А такой пример тоже плох?

http://mathgl.sourceforge.net/mathgl_en/mathgl_en_93.html#Vect-sample

или другие из http://mathgl.sourceforge.net/dd_plots.html

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

Реквестирую поддержку хотя бы одного из родных LaTeX форматов - (pgf/tikz) или metapost.

Все перепробовал для диссертации gnuplot, matplotlib, R. В итоге остановился на R c tikzDevice, на печати так смотрится лучше всего.

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

> Замечательно рисует поверхности с заполнением. Почему нет адекватных примеров на сайте? не знаю, но после просмотра их примеров в документации (10-15 минут заняло), делаю прекрасные поверхности, могу пару примеров кинуть.

Киньте если не сложно. А то пока я нашел только один необычный график — ошибки кружками, которого нет в MathGL (точнее есть похожий http://mathgl.sourceforge.net/mathgl_en/mathgl_en_90.html#Mark-sample , но не совсем такой). А новых примеров поверхности не нашел :(

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

> Я не знаю что такое «оконная библиотека», мне ps'ник надо сделать, а подложка берется из файла в формате матрица. Нужно для построения таких картинок

Например так из рисунка:

mglData fon; fon.Import(«image.png»,«kw»,-1,1);gr->Dens(fon,«kw»);

и продолжаем рисовать

gr->Cont(dat,«BbcyrR»); ...

Или из файла данных

mglData fon(«fname.dat»); gr->Crange(fon); gr->Dens(fon,«kw»);

и снова продолжаем рисовать :)

gr->Cont(dat,«BbcyrR»); ...

см. также http://mathgl.sourceforge.net/mathgl_en/mathgl_en_95.html#Flow-_0026-Dens-sample

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

> Реквестирую поддержку хотя бы одного из родных LaTeX форматов - (pgf/tikz) или metapost.

Никогда не пользовался :( — все больше PNG или EPS вставляю. Попробую разобраться и сделать.

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

Я хочу, чтобы один контур был под другим. Background контур должен быть бледным, а на foreground должны быть нанесены либо числовые значения либо линии уровня должны обозначаться разными пунктирными линиями. Естественно, никаких цветов, всё в векторном виде в ps. Как сделать такое в mathgl я не осилил.

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

Ну, gnuplot и tikz, и mp, и pstricks, и epslatex, и даже просто latex умеет выдавать.

А так да, в стиле epslatex хорошо бы умение, вкусно ;)

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

Вообще можно комбинировать любые графики — один поверх другого

Из документации http://mathgl.sourceforge.net/mathgl_ru/mathgl_ru_5.html#General-concepts

Новые графики не удаляют уже нарисованное. Этот, в чем-то неожиданный, подход позволяет создавать огромное количество “комбинированных” графиков. Например, поверхность с наложенными линиями уровня строится двумя последовательными вызовами функций рисования поверхности и линий уровня (в любом порядке). И совершенно не надо писать специальную функцию (как в Matlab и некоторых других программах) для рисования этого графика. Примеров таких графиков можно привести множество (см. раздел Hints и сайт программы http://mathgl.sf.net/index.html).

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

> из скрипта соответственно так ?

да

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

> В итоге остановился на R c tikzDevice

Да, там красиво получается. Только «многословно» для большого количества точек (если требуется дополнительное редактирование).

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

> Да, хорошо смотрится, согласен. Плюс MathGL в объёме векторное поле умеет ;)

А еще линии (http://mathgl.sourceforge.net/mathgl_ru/mathgl_ru_93.html#Flow-3D-sample) и трубки тока (http://mathgl.sourceforge.net/mathgl_ru/mathgl_ru_93.html#Pipe-3D-sample) :)

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

Ну, единственные удачные линии тока, которые у меня получались: это когда сам пускал «пробные частицы» отдельным кодом…

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

Это всегда так — итоговую картинку для статьи обычно слегка «вылизываешь». Только если надо «быстро» посмотреть на векторное поле и его особенности — то тут без Flow/Pipe не обойтись ;).

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