Комментарии 25
В качестве дополнения к статье (весьма полезной, между прочим) замечу, что Матлаб, в общем-то, предоставляет весьма скудные возможности по редактированию графиков. И мой коллега убедил меня использовать еще один этап подготовки--редактирование в векторном редакторе. Например, CorelDraw, Adobe Illustrator или Inkscape (последний--бесплатный, по функционалу вполне сравним с первыми двумя; что-то в нем хуже, а что-то лучше). Многие проблемы, тяжело- или вообще не-решаемые в Матлаб, можно решать уже там.
+1
То есть workflow такой: делаем график в Матлабе->экспортируем в eps->импортируем в Illustrator /Inkscape->наводим окончательную красоту там->экспортируем во что хотим (eps или png).
+1
У меня каждый график отрисовывается огромное количество раз — каждый раз, когда нашёл баг в коде, ошибку в данных, сделал другую гипотезу и т.п. Поэтому нереально делать неавтоматизированный workflow — график готовится в момент первого вывода данных, а в итоговый документ вставится вариант из последнего запуска программы.
Мне пока что хватало стандартных средств MatLab. Расскажите, что вы не нашли, может помогу чем?
Мне пока что хватало стандартных средств MatLab. Расскажите, что вы не нашли, может помогу чем?
0
То, что графики часто надо перестраивать--это безусловно. Я имел в виду уже последний этап работы с ними--когда вы готовите график в статью или презентацию и точно знаете, какие данные там будут. Например, вы врядли сможете сделать сразу в матлабе
именно такую картинку.
Некоторые из сложностей: размеры разных элементов текста, размеры показателей степени (они чуть больше, чем по умолчанию, иначе плохо видно), цвет рамки легенды, подписи легенды (два столбца), расположение легенды, расположение буквы (d) и т.п. Кроме того, это часть графика из четырех таких картинок (2 по горизонтали, 2 по вертикали). В матлабе вы тоже аккуратно не настроите нужные поля между картинками, выравнивание подписей к осям (цифры и текст). Кроме того, пришлось сместить "-1" при \gamma вниз, иначе на соседнем графике с такой же подписью "-1" была слишком близка к цифре 10 выше. И т.п. Но исходная картинка с кое-какими настройками была из Матлаба, и, конечно, она перестраивалась много раз перед окончательной подготовкой.0
P.S. Почему-то habrastorage не хотел принимать картинку, экспортированную из CorelDraw, пришлось сделать print screen и вырезать кусок экрана с картинкой. Потому без антиалиасинга, извините. Так бы она была еще красивее :-)
0
Да, действительно, я не до такой степени вылизываю свои графики :-)
Единственное, что могу сказать — букву (d) можно легко поставить через annotation, со всем остальным не сталкивался…
Единственное, что могу сказать — букву (d) можно легко поставить через annotation, со всем остальным не сталкивался…
0
Столкнулся недавно с проблемой: необходимо было построить две поверхности, задаваемые уравнениями, на одном графике.
Скажите, МатЛаб такое может? Мне порекомендовали SciLab…
Скажите, МатЛаб такое может? Мне порекомендовали SciLab…
0
Может, разумеется. 95% того, что может Матлаб, вообще едва ли понадобится одному человеку
0
Помогите, пожалуйста, нарисовать вот такие 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
Буду признателен.
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
Буду признателен.
0
Пожалуйста:
Вообще в матлабе чрезвычайно мощный хелп (один из лучших, что я когда-то либо видел), 90% ответов на вопросы можно найти прямо там.
[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% ответов на вопросы можно найти прямо там.
0
Спасибо большое!
Но на матлаб у меня физически времени не хватает. До этого с такими проблемами не сталкивался — обрабатывал результаты и представлял их, в основном, средствами Excel, AdGrapher и CurveExpert. Хватало :) А ради одной небольшой нетривиальной задачи каждый раз погружаться в дебри очередного незнакомого пакета, при этом совсем не юзер-френдли (в отличие, например, от маткада) никакой жизни не хватит. Все знать невозможно, а стремление в познании должно быть обосновано профитом, отнесенным к потраченному времени…
Но на матлаб у меня физически времени не хватает. До этого с такими проблемами не сталкивался — обрабатывал результаты и представлял их, в основном, средствами Excel, AdGrapher и CurveExpert. Хватало :) А ради одной небольшой нетривиальной задачи каждый раз погружаться в дебри очередного незнакомого пакета, при этом совсем не юзер-френдли (в отличие, например, от маткада) никакой жизни не хватит. Все знать невозможно, а стремление в познании должно быть обосновано профитом, отнесенным к потраченному времени…
0
Могу оформить как CDF и вы сможете этот график в браузере посмотреть, как тут: Introducing the Computable Document Format (CDF).
0
Для правильной φ попробуйте использовать символ
\varPhi
. Если там более-менее нормальный TeX, должно прокатить.0
text(0.1, 0.8, '$\varphi$', 'FontSize', 20, 'Interpreter', 'latex')
0
Еще одна статья про рабовладельческое ПО. Напишите лучше статью про Octave+gnuplot
0
Из открытого ПО отличная библиотека matplotlib для для питона. Умеет и LaTeX вставлять на графики и в форматы различные сохранять.Возможности можно оценить на на страничке примеров .
0
Графики в матлабе предоставляют довольно много возможностей, но нет тривиальных вещей, вроде поворота меток на осях. Даты, например, отображать очень неудобно. Ещё в матлабе беда с производительностью графической подсистемы. То есть она просто никакая. Графики с большим количеством данных тормозят безбожно. Интерактивные инструменты визуализации тоже оставляют желать лучшего. Если кому нужно, я когда-то давно написал функцию для интерактивного взаимодействия с 2D, 3D графиками. А вообще, лучше пользоваться Python+Matplotlib. Matlab непомерно дорог.
0
А кто-нибудь знает, как в MatLab синхронизировать две оси Y? То есть, у меня есть два графика, у каждого своя ось Y (слева и справа), и я хотел бы сделать так, чтобы у них, например, совпадали начала отсчёта. Или какие-то другие, заданные мною точки, были бы напротив друг друга. Есть, конечно, вариант всё просчитать самому (YLim, YTicks и т.п.), но наверняка же я не первый человек, столкнувшийся с этой проблемой, вполне возможно, есть уже какая-то работающая функция…
0
есть пакет export_fig, который много чего умеет и его код можно использовать, как примеры
0
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Подготовка графиков в MatLab