Как стать автором
Обновить

Комментарии 25

В качестве дополнения к статье (весьма полезной, между прочим) замечу, что Матлаб, в общем-то, предоставляет весьма скудные возможности по редактированию графиков. И мой коллега убедил меня использовать еще один этап подготовки--редактирование в векторном редакторе. Например, CorelDraw, Adobe Illustrator или Inkscape (последний--бесплатный, по функционалу вполне сравним с первыми двумя; что-то в нем хуже, а что-то лучше). Многие проблемы, тяжело- или вообще не-решаемые в Матлаб, можно решать уже там.
То есть workflow такой: делаем график в Матлабе->экспортируем в eps->импортируем в Illustrator /Inkscape->наводим окончательную красоту там->экспортируем во что хотим (eps или png).
У меня каждый график отрисовывается огромное количество раз — каждый раз, когда нашёл баг в коде, ошибку в данных, сделал другую гипотезу и т.п. Поэтому нереально делать неавтоматизированный workflow — график готовится в момент первого вывода данных, а в итоговый документ вставится вариант из последнего запуска программы.
Мне пока что хватало стандартных средств MatLab. Расскажите, что вы не нашли, может помогу чем?
То, что графики часто надо перестраивать--это безусловно. Я имел в виду уже последний этап работы с ними--когда вы готовите график в статью или презентацию и точно знаете, какие данные там будут. Например, вы врядли сможете сделать сразу в матлабе
именно такую картинку.
image
Некоторые из сложностей: размеры разных элементов текста, размеры показателей степени (они чуть больше, чем по умолчанию, иначе плохо видно), цвет рамки легенды, подписи легенды (два столбца), расположение легенды, расположение буквы (d) и т.п. Кроме того, это часть графика из четырех таких картинок (2 по горизонтали, 2 по вертикали). В матлабе вы тоже аккуратно не настроите нужные поля между картинками, выравнивание подписей к осям (цифры и текст). Кроме того, пришлось сместить "-1" при \gamma вниз, иначе на соседнем графике с такой же подписью "-1" была слишком близка к цифре 10 выше. И т.п. Но исходная картинка с кое-какими настройками была из Матлаба, и, конечно, она перестраивалась много раз перед окончательной подготовкой.
P.S. Почему-то habrastorage не хотел принимать картинку, экспортированную из CorelDraw, пришлось сделать print screen и вырезать кусок экрана с картинкой. Потому без антиалиасинга, извините. Так бы она была еще красивее :-)
Да, действительно, я не до такой степени вылизываю свои графики :-)
Единственное, что могу сказать — букву (d) можно легко поставить через annotation, со всем остальным не сталкивался…
Столкнулся недавно с проблемой: необходимо было построить две поверхности, задаваемые уравнениями, на одном графике.
Скажите, МатЛаб такое может? Мне порекомендовали SciLab…
Может, разумеется. 95% того, что может Матлаб, вообще едва ли понадобится одному человеку
Помогите, пожалуйста, нарисовать вот такие 2 поверхности:
z=100-1.692*x/y
z1=100-0.2524*x-0.008x^2-0.054*y^2+0.000136*x*y^2+0.00000432*x^2*y*2
x=0..30
y=0..20
Буду признателен.
Пожалуйста:
[x, y] = meshgrid(0:0.1:30, 0:0.1:20);
z = 100 - 1.692 .* x ./ y;
z1 = 100 - 0.2524 .* x - 0.008 .* x.^2 - 0.054 .* y.^2 + 0.000136 .* x .* y.^2 + 0.00000432 .* x.^2 .* y .* 2;
surf(x, y, z);
hold on;
surf(x, y, z1);


Вообще в матлабе чрезвычайно мощный хелп (один из лучших, что я когда-то либо видел), 90% ответов на вопросы можно найти прямо там.
Спасибо большое!
Но на матлаб у меня физически времени не хватает. До этого с такими проблемами не сталкивался — обрабатывал результаты и представлял их, в основном, средствами Excel, AdGrapher и CurveExpert. Хватало :) А ради одной небольшой нетривиальной задачи каждый раз погружаться в дебри очередного незнакомого пакета, при этом совсем не юзер-френдли (в отличие, например, от маткада) никакой жизни не хватит. Все знать невозможно, а стремление в познании должно быть обосновано профитом, отнесенным к потраченному времени…
Спасибо огромное! Красота неописуемая :)
Для правильной φ попробуйте использовать символ \varPhi. Если там более-менее нормальный TeX, должно прокатить.
text(0.1, 0.8, '$\varphi$', 'FontSize', 20, 'Interpreter', 'latex')
Спасибо redliner
text(0.1, 0.8, '$\varphi$', 'FontSize', 20, 'Interpreter', 'latex')

в таком варианте действительно работает
Еще одна статья про рабовладельческое ПО. Напишите лучше статью про Octave+gnuplot
Напишите. Никто же не заставляет вас это читать. А то дойдём до комментариев «напишите лучше про Бритни Спирс, она мне больше MatLab нравится!»
Из открытого ПО отличная библиотека matplotlib для для питона. Умеет и LaTeX вставлять на графики и в форматы различные сохранять.Возможности можно оценить на на страничке примеров .
Графики в матлабе предоставляют довольно много возможностей, но нет тривиальных вещей, вроде поворота меток на осях. Даты, например, отображать очень неудобно. Ещё в матлабе беда с производительностью графической подсистемы. То есть она просто никакая. Графики с большим количеством данных тормозят безбожно. Интерактивные инструменты визуализации тоже оставляют желать лучшего. Если кому нужно, я когда-то давно написал функцию для интерактивного взаимодействия с 2D, 3D графиками. А вообще, лучше пользоваться Python+Matplotlib. Matlab непомерно дорог.
А кто-нибудь знает, как в MatLab синхронизировать две оси Y? То есть, у меня есть два графика, у каждого своя ось Y (слева и справа), и я хотел бы сделать так, чтобы у них, например, совпадали начала отсчёта. Или какие-то другие, заданные мною точки, были бы напротив друг друга. Есть, конечно, вариант всё просчитать самому (YLim, YTicks и т.п.), но наверняка же я не первый человек, столкнувшийся с этой проблемой, вполне возможно, есть уже какая-то работающая функция…
Для случайных прохожих: функция называется linkaxes.
есть пакет export_fig, который много чего умеет и его код можно использовать, как примеры
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации