Язык программирования для создания иллюстраций

Vlad128

Раньше был некий опыт на metapost, прикольный язык, но немного устаревший, видимо.
Вот поюзал asymptote. Один из приколов: на этот язык исходная задача очень красиво легла, если бы она не упиралась в необходимость быстро считать, переписал бы может полностью на нем алгоритм, а не только визуализацию :grin: Но asymptote все-таки просто берет идею path у metapost (metafont?) и прикручивает типа C++-like синтаксис и простейшее ООП с перегрузкой. Но на этом все заканчивается. Удобно на нем писать не выходит, смешивается логика построения картинки с логикой отображения (стрелочки, ручечки). Хотелось бы разделение структуры и отображения, сейчас приходится как-то ацки извращаться и передавать параметры вглубь, либо городить глобальные переменные.
Есть ли еще что интересное?
Интересуют не столько графики (хотя они тоже сколько отображение структурированной информации (деревья, решетки, графы, пути).

antcatt77

Вот поюзал asymptote
пример, какой-нибудь, покажи, пожалуйста.

antonata

Я сейчас с TikZ играюсь. Пока только познаю, так что едва ли могу что-то кокретное сказать. Но примеры вполне сморятся: http://www.texample.net/tikz/examples/all/

Vlad128

сейчас под рукой нету. Завтра покажу.
ну т.е. есть вот стандартные примеры, конечно http://asymptote.sourceforge.net/gallery/

Vlad128

картинки вкусные, язык пока не могу прочувствовать, декларативненько, будто надо из какого-то другого места генерить на нем данные. Но что-то припоминаю, да, любят его на stackexchange всяких, видимо, есть за что.

Jeton89

Для ежедневной рутины и первичного просмотра использую matplotlib.
Для статей - TikZ и pgfplots.
Общая идея - подготовка данных на питоне, запись их в текстовый файл с несколькими колонками, а потом уже pgfplots и tikz для придания неотразимого вида.
Еще есть очень хорошая штука - GLE. У нее даже есть гуи-редактор достаточно удобный. Не помню уже почему с нее на tikz перешел. Вроде из-за того что в tikz со стилевыми файлами теховскими немного проще работать.

Niklz

просто интересно... а в чем смысл всех этих пакетов - почему нельзя сохранять картинки в векторном формате прямо из matplotlib или Matlab и вставлять их в теховский документ? всю жизнь так делал. правда я щи тоже лаптем ем.

Vlad128

с графиками проблем почти нет. Но из матлаба экспортировать графики бывает не очень удобно, довольно муторно делать их хорошо выровненными, нет повторного использования, чтобы поправить график надо по сути все заново сделать. Но, в принципе, пользоваться можно. У меня вопрос именно про абстрактные рисунки, схемы, диаграммы.

Vlad128

пример:

size(307.28987pt, 0);
import torus;
torus.w = 7;
torus.h = 5;

drawTorus(lbl=false, axes=true);

pair X = right,
Y = up;

var paths = new pair[][] {
{+X, +X, +Y},
{+X, +X, -Y, -Y, -Y, -Y},

{+Y, -X, -X, -X, -X, -X},
{-X, -X, -X, -X, -X, -Y}
};

int node = 17;
dot(fromId(node red);
for( var p: paths ) {
drawPath(node, p);
}

дает

Но torus тут я сам писал. Пример создания пути оттуда:

path wrap(pair src, pair dst) {
pair sh = 0.15up;
bool vertical = src.x == dst.x;
transform symm = reflect0, 0 (1, 1;
if( vertical ) {
src = symm * src;
dst = symm * dst;
}

bool needReversing = src.x < dst.x;
if( needReversing ) {
pair sw = src;
src = dst;
dst = sw;
}
pair marg = 0.2right;
path line = src--src + marg..shift(sh)*(src + marg..dst - marg)..dst - marg--dst;

if( vertical ) {
line = symm * line;
}
return needReversing ? reverse(line) : line;
}

antcatt77

чем это лучше любимого языка + библиотека path-ов?

Vlad128

это я спрашиваю: кто чем пользуется. Если любимым языков+библиотекой, то так и пишите :) Что за библиотеки, кстати?
Если в любимом языке так же легко создавать пути в виде scale(2)*(a{right}..{left}b--c то как бэ, я не против.

Jeton89

У меня тараканы по поводу качества картинок. Мне нужно чтобы все подписи и цифры были такими же как и в основном тексте, чтобы рисунок органически вписывался в текст.

Lene81

Численные данные визуализую в gnuplot, скетчи и схемы (2D, 3D) — asymptote

Ivan382

Для рисунков графиков использую матлаб: сразу можно обработать или подгрузить ранее обработанные данные и нарисовать.
Для отрисовки использую несколько написанных мной функций, которыми форматирую наиболее часто меняемые свойства фигур и осей. Также здесь подписываю оси.
По сути рисунок - это скрипт. Если как-то поменялись данные или что-то нужно перерисовать - просто модифицирую скрипт и запускаю заново. Экспортирую в eps и tiff стандартной командой.
Для небольших схем и скетчей - CorelDraw.
Оставить комментарий
Имя или ник:
Комментарий: