saveas
saveas( fig , filename ) сохраняет фигуру или Simulink ® блок-схема задана fig зарегистрировать filename . Задайте имя файла как вектор символов или строку, которая включает расширение файла, например, ‘myplot.jpg’ . Расширение файла задает формат файла. Если вы не задаете расширение, то saveas сохраняет фигуру в файл FIG. Чтобы сохранить текущую фигуру, задайте fig как gcf .
saveas( fig , filename , formattype ) создает файл с помощью заданного формата файла, formattype . Если вы не задаете расширение файла в имени файла, например, ‘myplot’ , затем стандартное расширение, соответствующее заданному формату автоматически, добавляет к имени файла. Если вы задаете расширение файла, оно не должно совпадать с форматом. saveas использование formattype для формата, но сохранил файл с заданным расширением. Таким образом расширение файла не может совпадать с фактическим используемым форматом.
Примеры
Сохранение фигуры как файла PNG
Создайте столбчатую диаграмму и сохраните ее как файл PNG.
x = [2 4 7 2 4 5 2 5 1 4]; bar(x); saveas(gcf,'Barchart.png')
Сохранение фигуры как файла EPS
Создайте столбчатую диаграмму и сохраните ее как файл EPS. Задайте ‘epsc’ драйвер, чтобы сохранить его в цвете.
x = [2 4 7 2 4 5 2 5 1 4]; bar(x); saveas(gcf,'Barchart','epsc')
saveas сохраняет столбчатую диаграмму как Barchart.eps .
Сохранение диаграммы Simulink как файла BMP
Сохраните Диаграмму Simulink под названием ‘sldemo_tank’ как файл BMP. Используйте get_param получить указатель схемы. Необходимо было установить Simulink, чтобы запустить этот код.
sldemo_tank fig = get_param('sldemo_tank','Handle'); saveas(fig,'MySimulinkDiagram.bmp');
Входные параметры
fig — Фигурируйте, чтобы сохранить
изобразите объект | Диаграмма Simulink
Фигурируйте, чтобы сохранить в виде объекта фигуры или Диаграммы Simulink. Если вы задаете другие типы графических объектов, такой как оси, то saveas сохраняет родительскую фигуру в объект.
Пример: saveas(gcf,’MyFigure.png’)
Чтобы сохранить Диаграмму Simulink, используйте get_param получить указатель схемы. Например, сохраните блок-схему под названием ‘sldemo_tank’ .
sldemo_tank saveas(get_param('sldemo_tank','Handle'),'MySimulinkDiagram.bmp');
filename FileName
вектор символов | строка
Имя файла в виде вектора символов или строки с или без расширения файла.
Пример: ‘Bar Chart’
Пример: ‘Bar Chart.png’
Если вы задаете расширение файла, то saveas использует связанный формат. Если вы задаете расширение файла и дополнительно задаете formattype входной параметр, затем saveas использование formattype для формата и сохранил файл с заданным именем файла. Таким образом расширение файла не может совпадать с фактическим используемым форматом.
Можно задать любое расширение, соответствующее формату файла. Эта таблица приводит некоторые расширения общего файла.
MATLAB ® Файл FIG (недопустимый для Диаграмм Simulink)
Файл FIG MATLAB и код MATLAB, который открывает фигуру (недопустимый для Диаграмм Simulink)
Переносимая сетевая графика
Уровень 3 EPS, черный и белый
Формат переносимых документов
Windows ® битовый массив
Портативный битовый массив
Портативная пиксельная карта
Изображение TIFF, сжатое
Типы данных: char | string
formattype FileFormat
‘fig’ | ‘m’ | ‘mfig’ | формат файла растрового изображения | формат файла векторной графики
Формат файла в виде одной из этих опций:
- ‘fig’ — Сохраните фигуру как файл фигуры MATLAB с .fig расширение. Открыть фигуры, сохраненные с .fig расширение, используйте openfig функция. Этот формат не допустим для Диаграмм Simulink.
- ‘m’ или ‘mfig’ — Сохраните фигуру как файл фигуры MATLAB и дополнительно создайте файл MATLAB, который открывает фигуру. Чтобы открыть фигуру, запустите файл MATLAB. Эта опция не допустима для Диаграмм Simulink.
- Формат файла растрового изображения — Задает формат как одну из опций растрового изображения в таблице, Форматах растрового изображения.
- Формат файла векторной графики — Задает формат как одну из опций векторной графики в таблице, Форматах Векторной графики.
Файл растрового изображения
Растровые изображения содержат основанное на пикселе представление фигуры. Размер сгенерированного файла зависит от фигуры, формата и вашего системного разрешения. Растровые изображения широко используются веб-браузерами и другими приложениями та графика отображения. Однако они не поддерживают прозрачность или масштабируются хорошо, и вы не можете изменить отдельные графические объекты (такие как линии и текст) в других графических приложениях.
Форматы растрового изображения
| Опция | Формат | Расширение файла по умолчанию |
|---|---|---|
| ‘jpeg’ | 24-битный JPEG | .jpg |
| ‘png’ | 24-битный PNG | .png |
| ‘tiff’ | TIFF, 24-битный (сжатый) | .tif |
| ‘tiffn’ | 24-битный TIFF (не сжатый) | .tif |
| ‘meta’ | Расширенный метафайл (только Windows) | .emf |
| ‘bmpmono’ | Монохром BMP | .bmp |
| ‘bmp’ | 24-битный BMP | .bmp |
| ‘bmp16m’ | 24-битный BMP | .bmp |
| ‘bmp256’ | 8-битный BMP (256 цветов, использует фиксированную палитру), | .bmp |
| ‘hdf’ | 24-битный HDF | .hdf |
| ‘pbm’ | PBM (простой формат) 1-битный | .pbm |
| ‘pbmraw’ | PBM 1-битный (формат .raw) | .pbm |
| ‘pcxmono’ | 1-битный PCX | .pcx |
| ‘pcx24b’ | PCX 24-битный цвет (три 8-битных плоскости) | .pcx |
| ‘pcx256’ | PCX 8-битный более новый цвет (256 цветов) | .pcx |
| ‘pcx16’ | PCX более старый цвет (EGA/VGA, с 16 цветами) | .pcx |
| ‘pgm’ | PGM (простой формат) | .pgm |
| ‘pgmraw’ | PGM (формат .raw) | .pgm |
| ‘ppm’ | PPM (простой формат) | .ppm |
| ‘ppmraw’ | PPM (формат .raw) | .ppm |
Файл векторной графики
Файлы векторной графики хранят команды, которые перерисовывают фигуру. Этот тип формата масштабируется хорошо, но может привести к большому файлу. В некоторых случаях формат векторной графики не может произвести правильное 3-D расположение объектов. Некоторое интенсивное редактирование поддержки приложений форматов векторной графики, но другие не поддерживает редактирование вне изменения размеров диаграммы. Лучшая практика должна внести все необходимые изменения, в то время как ваша фигура находится все еще в MATLAB.
Как правило, saveas использует средство отображения Живописцев при генерации файлов векторной графики. Для некоторых комплексных фигур, saveas использует OpenGL ® средство отображения вместо этого. Если это использует средство отображения OpenGL, то файл векторной графики содержит встроенное изображение, которое может ограничить степень, до которой можно отредактировать изображение в других приложениях. Кроме того, если saveas использует средство отображения OpenGL, чтобы сгенерировать файл, затем прозрачность не поддерживается. Гарантировать тот saveas использует средство отображения Живописцев, установите Renderer свойство для фигуры к ‘painters’ .
Если вы устанавливаете Renderer свойство для фигуры, затем saveas использование то средство отображения. В противном случае это выбирает соответствующее средство отображения. Однако, если saveas выбирает средство отображения, которое отличается от средства отображения, используемого для фигуры по отображению, затем некоторые детали сохраненной фигуры могут отличаться от отображенной фигуры. При необходимости можно заставить отображенную фигуру и сохраненную фигуру использовать то же средство отображения путем установки Renderer свойство для фигуры.
Форматы векторной графики
| Опция | Формат | Расширение файла по умолчанию |
|---|---|---|
| ‘pdf’ | Полная страница цвет формата переносимых документов (PDF) | |
| ‘eps’ | Инкапсулированный формат PostScript ® (EPS) Уровень 3, черный и белый | .eps |
| ‘epsc’ | Инкапсулированный формат PostScript (EPS) цвет Уровня 3 | .eps |
| ‘eps2’ | Инкапсулированный формат PostScript (EPS) Уровень 2, черный и белый | .eps |
| ‘epsc2’ | Инкапсулированный формат PostScript (EPS) цвет Уровня 2 | .eps |
| ‘meta’ | Расширенный Метафайл (только Windows) | .emf |
| ‘svg’ | SVG (масштабируемая векторная графика) | .svg |
| ‘ps’ | Полностраничный PostScript (PS) Уровень 3, черный и белый | .ps |
| ‘psc’ | Полностраничный PostScript (PS) цвет Уровня 3 | .ps |
| ‘ps2’ | Полностраничный PostScript (PS) Уровень 2, черный и белый | .ps |
| ‘psc2’ | Полностраничный PostScript (PS) цвет Уровня 2 | .ps |
Примечание
Только PDF и форматы PS используют PaperOrientation свойство фигуры и left и bottom элементы PaperPosition свойство. Другие форматы игнорируют эти значения.
Документация
Сохраните график как файл векторной графики или растровую графику
![]()
Можно сохранить графики как изображения или как файлы векторной графики с помощью или кнопки экспорта на панели инструментов осей, или путем вызова exportgraphics функция. При решении между двумя типами содержимого рассмотрите качество, размер файла и требования форматирования для документа, в который вы помещаете файл.
Изображения поддерживаются в большинстве приложений. Они полезны для представления графических изображений и объединяют поверхности. Однако, потому что они составили из пикселей, они не всегда масштабируются хорошо, когда вы распечатываете или отображаете их на других устройствах, которые имеют различные разрешения. В некоторых случаях вы можете должны быть сохранить образ с достаточным количеством разрешения, чтобы удовлетворить определенным требованиям к уровню качества. Более высокие файлы разрешения имеют тенденцию быть больше, который может сделать их трудными совместно использовать в электронном письме или загрузке на сервер. Это может также затруднить, чтобы отредактировать линии и текст в изображении, не вводя артефакты.
Файлы векторной графики содержат инструкции для проведения линий, кривых и многоугольников. Они полезны для представления содержимого, состоящего из линий, кривых и областей сплошного цвета. Эти файлы содержат высококачественное содержимое, которое масштабируемо к любому размеру. Однако некоторые поверхности и сетчатые графики являются слишком сложными, чтобы быть представленными с помощью векторной графики. Некоторое интенсивное редактирование поддержки приложений файлов векторной графики, в то время как другая поддержка приложений, только изменяющая размер графики.
Независимо от того, сохраняете ли вы свои графики как изображения или как файлы векторной графики, можно получить лучшие результаты путем завершения содержимого в MATLAB ® фигурируйте прежде, чем сохранить ваш файл.
Сохраните графики в интерактивном режиме
![]()
Чтобы сохранить график с помощью интерактивных способов управления, используйте кнопку экспорта на панели инструментов осей. Панель инструментов появляется, когда вы наводите на правый верхний угол осей. Кнопка экспорта поддерживает три формата изображения (PNG, JPEG и TIFF), а также файлы PDF, которые могут содержать изображения или векторную графику, в зависимости от содержимого в осях.
![]()
Например, создайте столбчатую диаграмму. Сохраните график в файл путем наведения на кнопку экспорта на панели инструментов осей и выбора первого элемента в выпадающем списке.
bar([1 11 7 8 2 2 9 3 6])
Заметки про Matlab. Экспорт графиков.
О последнем пункте и пойдет речь в статье. Как это ни странно, Matlab для создания графиков довольно плох (особенно по меркам современности). Казалось бы, создание графиков в Matlab должно быть козырем программы. Но графики в Matlab обладают рядом изъянов. И это не только «вина» разработчиков Matlab, но и особенности аккумулируемых в Matlab технологий для производства этих графиков.
Создание графиков в Matlab
Одной из лучших статей по теме является запись в блоге одного из разработчиков Matlab — Loren Shure.
Для быстрого ознакомления с графикой в Matlab рекомендую ознакомиться со статьей выше.
Чтобы автоматизировать большинство нужных операций для создания красивых графиков, можно внести изменения в файл startup.m (в папке MatlabFolder/toolbox/local). Этот файл содержит пользовательские настройки, которые подключаются при запуске Matlab.
Для редактирования файла startup.m можно в консоли Matlab набрать команду:
edit startup
В файле startup.m я использую следующие настройки:
% % Default Figure properties
set ( 0 , ‘DefaultAxesBox’ , ‘on’ , . . .
‘DefaultAxesFontName’ , ‘Times New Roman’ , . . .
‘DefaultAxesFontSize’ , 14 , . . .
‘DefaultAxesFontWeight’ , ‘bold’ , . . .
‘DefaultaxesLineWidth’ , 1.5 ) ;
set ( 0 , ‘DefaultPatchLineWidth’ , 1.5 )
set ( 0 , ‘DefaultTextFontName’ , ‘Times New Roman’ , . . .
‘DefaultTextFontSize’ , 14 , . . .
‘DefaultTextFontWeight’ , ‘bold’ , . . .
‘DefaultLineLineWidth’ , 1.5 ) ;
set ( 0 , ‘defaultfigurecolor’ , [ 1 1 1 ] ) ;
Все параметры по умолчанию, которые можно изменить в файле startup.m можно посмотреть, выполнив в консоли Matlab команду
get ( 0 , ‘default’ )
Пример кода Matlab для создания графика
ix_max = 100 ;
x = linspace ( 0 , 1 , ix_max ) ;
y = log ( sin ( x ) ) ;
figure ( ‘Name’ , ‘Plot x vs y’ , ‘FileName’ , ‘y-plot’ ) ;
plot ( x , y , ‘—r’ , ‘DisplayName’ , ‘y(x)’ ) ;
legend ( ‘show’ ) ;

Для создания легенды рекомендую использовать сразу в команде plot (и других подобных) ключ DisplayName. Ключ FileName нужен для того, чтобы сразу задать имя файла, в который будет сохранен рисунок.
Когда график создан, нужно сохранить его в родной формат Matlab — fig-файл. И тут начинаются проблемы. Дело в том, что Matlab по какому-то странному стечению обстоятельств, не сохраняет положение xlabel и ylabel в fig-файле (т.е. Matlab не считает подписи под осями частью рисунка!). Это странное поведение не позволяет при необходимости с легкостью вносить изменения в уже готовый fig-файл. Так как при каждом открытии fig-файла ряд добавленных вручную свойств (те же положение меток xlabel) просто пропадают. Ситуация становится критической, когда нужно обработать несколько графиков, которые должны быть однотипными (т.е. в них, например, должны изменяться только кривые y(x), но не положение подписей к рисунку).
Экспорт графиков из Matlab
Родная для Matlab схема экспорта графики
Matlab позволяет экспортировать рисунки в различных форматах (векторная графика — emf, wmf, pdf, eps; растр — png, bmp, jpg, tif). Для простых 2D графиков лучше использовать векторные форматы. Для сложных 3D графиков лучше использовать — png или другую растровую графику.
Для экспорта графика в Matlab у каждой фигуры в меню File->Export Setup есть ряд настроек, которые позволяют сохранить файл с заданными свойствами — шириной и высотой, размером шрифта и многое другое. Автоматизировать действие по экспорту рисунков позволяет функция export_fig, которую написал один из пользователей Matlab (Oliver Woodford).
До этого момента работа с графиками в Matlab укладывалась в следующую схему:
Построение графика-Сохранение в файл fig — Экспорт с помощью Export Setup

Эта схема достаточно удобна, особенно в том случае, когда на этапе построения графиков у всех линий и осей указаны все нужные свойства — размер, толщина линий, тип шрифта и так далее. Но как было рассказано раньше, на этапе сохранения фигуры в fig файл часть трудов по созданию графика просто не сохраняются Matlab. При этом шаг по сохранению рисунка в fig-файл является необходимым, чтобы иметь возможность дополнить или изменить график, легко извлечь из него данные и так далее.
К тому же для нашей российской специфики — в графиках вместо разделителя десятичного разряда в виде точки, должна использоваться запятая. Это вносит дополнительные трудности. Так как в Matlab просто так указать на то, какой должен быть десятичный разделитель нельзя. Для этого надо «вручную» заменить точки в XTickLabel, YtickLabel свойствах осей на запятые.
Как видно, на этом этапе начинаются основные трудности.
Для 2D графиков можно предложить альтернативное решение всех проблем. Оно, конечно, как почти всегда с Matlab, оказывается в значительной мере «танцем с бубном», но оно работает и никогда не подводит.
Новая схема: используем Matlab+PowerPoint с помощью Smart PowerPoint Exporter
Цель: получить векторный рисунок графика Matlab при этом избежать всех сложностей с неказистым и неудобным редактором графики в Matlab.
Средства: Matlab (для производства графика), PowePoint 2010 (для хранения векторной графики), Smart PowerPoint Exporter (для экспорта фигуры из Matlab в PowerPoint).
Как видно, ключевой элемент новой схемы — это Smart PowerPoint Exporter. Это отличная утилита, написанная одним из пользователей Matlab (Dmitriy Aronov).
Итак, для начала надо установить Smart PowerPoint Exporter в Matlab.
Устанавливаем Smart PowerPoint Exporter по умолчанию для любой новой фигуры командой:
Как сделать анимацию в MATLAB и сохранить её в формате GIF
В прошлой заметке мы с вами создавали видеролик при помощи MATLAB. Иногда полезно иметь анимацию не в видео формате, а в виде популярного в интернете формата GIF.
За основу мы возьмём код и данные, которые использовали в вышеупомянутой заметке:
for n =1:365 worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. n),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') caxis([-80 40]) cmocean('thermal') colorbar title(datestr(t(n))) frame(n) = getframe(gcf); close(gcf) end v = VideoWriter('air_temp2018.mp4','MPEG-4'); v.FrameRate = 10; open(v) writeVideo(v,frame) close(v)
Напомню, что первая часть строит все нужные нам картинки (отдельные кадры будущего видео) и записывает их в переменную frame. Затем, используя эту самую переменную frame во второй части кода мы создаём их этих кадров видеоролик. Сейчас эта вторая часть нам не понадобится, мы теперь используем переменную frame для создания GIF. Давайте я сначала сразу приведу здесь готовый код, а уже потом сделаю некоторые пояснения:
for n = 1:size(frame,2) [A,map] = rgb2ind(frame2im(frame(n)),256); if n == 1 imwrite(A,map,'test1.gif','gif','LoopCount',Inf,'DelayTime',1); else imwrite(A,map,'test1.gif','gif','WriteMode','append','DelayTime',1); end end
Если вы не хотите разбираться, то можете прямо его использовать и не задумываться о деталях.
Итак, как вы наверное поняли, gif создаётся при помощи функции imwrite, которая создана, вообще говоря, для записи разных типов графических файлов, не только gif (png, jpg и т.п.).
GIF файл создаётся в несколько этапов, сначала создаётся первый кадр (он может остаться единственным, если нам не нужна анимация), в коде это отражено в строке, идущей сразу после «if n == 1». Затем остальные кадры анимации записываются в наш файл при помощи опции ‘WriteMode’,’append’.
Поскольку формат gif работает с индексированными цветами, то нам нужно перевести изображения из RGB в эти самые индексированные цвета, т.е. получить в нашем случае само изображение, которое будет записано в переменную A и карту цветов (т.е. какому цвету соответствует каждое число в переменной A), записанную в переменную map. Делает это всё функция rgb2ind. У нас, как вы видите, в качестве второго входного аргумента этой функции стоит число 256, это количество цветов, которые мы будем иметь в изображении. Если вам нужно уменьшить размер итогового файла, то вы может пожертвовать палитрой и создать гифку, состоящую из меньшего количества цветов. Например, так будет выглядить наша анимация, если мы оставим всего 8 цветов:
Также обратите внимание, что функция rgb2ind не поймёт, если вы попытаетесь скормить ей наши кадры, которые мы записывали в переменную frame, поэтому для начала мы должны перевести из в изображение при помощи функции frame2im.
Осталось только сказать, что ‘LoopCount’,Inf — означает, что наше изображение будет зацикленное, т.е. повторяться снова и снова, а ‘DelayTime’,1 — устанавливает задержку по времени между кадрами (в секундах).

Чтобы не пропустить новые материалы с рецептами по работе с океанологическими данными, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey
Данные для заметки:
NCEP Reanalysis data provided by the NOAA/OAR/ESRL PSD, Boulder, Colorado, USA, from their Web site at https://www.esrl.noaa.gov/psd/
Kalnay et al., The NCEP/NCAR 40-year reanalysis project, Bull. Amer. Meteor. Soc., 77, 437-470, 1996
Документация
Сохраните график как файл векторной графики или растровую графику
![]()
Можно сохранить графики как изображения или как файлы векторной графики с помощью или кнопки экспорта на панели инструментов осей, или путем вызова exportgraphics функция. При решении между двумя типами содержимого рассмотрите качество, размер файла и требования форматирования для документа, в который вы помещаете файл.
Изображения поддерживаются в большинстве приложений. Они полезны для представления графических изображений и объединяют поверхности. Однако, потому что они составили из пикселей, они не всегда масштабируются хорошо, когда вы распечатываете или отображаете их на других устройствах, которые имеют различные разрешения. В некоторых случаях вы можете должны быть сохранить образ с достаточным количеством разрешения, чтобы удовлетворить определенным требованиям к уровню качества. Более высокие файлы разрешения имеют тенденцию быть больше, который может сделать их трудными совместно использовать в электронном письме или загрузке на сервер. Это может также затруднить, чтобы отредактировать линии и текст в изображении, не вводя артефакты.
Файлы векторной графики содержат инструкции для проведения линий, кривых и многоугольников. Они полезны для представления содержимого, состоящего из линий, кривых и областей сплошного цвета. Эти файлы содержат высококачественное содержимое, которое масштабируемо к любому размеру. Однако некоторые поверхности и сетчатые графики являются слишком сложными, чтобы быть представленными с помощью векторной графики. Некоторое интенсивное редактирование поддержки приложений файлов векторной графики, в то время как другая поддержка приложений, только изменяющая размер графики.
Независимо от того, сохраняете ли вы свои графики как изображения или как файлы векторной графики, можно получить лучшие результаты путем завершения содержимого в MATLAB ® фигурируйте прежде, чем сохранить ваш файл.
Сохраните графики в интерактивном режиме
![]()
Чтобы сохранить график с помощью интерактивных способов управления, используйте кнопку экспорта на панели инструментов осей. Панель инструментов появляется, когда вы наводите на правый верхний угол осей. Кнопка экспорта поддерживает три формата изображения (PNG, JPEG и TIFF), а также файлы PDF, которые могут содержать изображения или векторную графику, в зависимости от содержимого в осях.
![]()
Например, создайте столбчатую диаграмму. Сохраните график в файл путем наведения на кнопку экспорта на панели инструментов осей и выбора первого элемента в выпадающем списке.
bar([1 11 7 8 2 2 9 3 6])
Сохранить график как изображение с помощью Matplotlib
Matplotlib — одна из наиболее широко используемых библиотек визуализации данных в Python. Обычно графики и визуализации Matplotlib делятся с другими.
В этой статье мы рассмотрим, как сохранить график в виде файла изображения с помощью Matplotlib.
Создание сюжета
Сначала создадим простой сюжет:
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.show()
Здесь мы построили синусоидальную функцию, начиная с 0 и заканчивая 10 с шагом 0.1 . Выполнение этого кода дает:

Теперь давайте посмотрим, как мы можем сохранить эту фигуру как изображение.
Сохранить график как изображение в Matplotlib
В предыдущем примере мы сгенерировали график с помощью функции plot() , передав данные, которые мы хотели бы визуализировать.
Этот график создается, но не отображается нам, если мы не вызываем функцию show() . Функция show() , как следует из названия, показывает сгенерированный участок пользователю в окне.
После создания мы также можем сохранить этот рисунок / график как файл — используя функцию savefig() :
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig('saved_figure.png')
Теперь, когда мы запускаем код, вместо всплывающего окна с графиком у нас есть файл ( saved_figure.png ) в каталоге нашего проекта.
Этот файл содержит точно такое же изображение, которое мы бы показывали в окне:

Стоит отметить, что функция savefig() не уникальна для экземпляра plt . Вы также можете использовать его на объекте Figure :
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) fig.savefig('saved_figure.png')
У функции savefig() есть обязательный аргумент filename . Здесь мы указали имя файла и формат.
Кроме того, она принимает другие варианты, такие как dpi , transparent , bbox_inches , quality и т.д.
В следующих разделах мы рассмотрим некоторые популярные варианты.
Настройка разрешения изображения
Параметр DPI определяет количество точек (пикселей) на дюйм. По сути, это разрешение создаваемого изображения. Давайте протестируем несколько разных вариантов:
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) fig.savefig('saved_figure-50pi.png', dpi = 50) fig.savefig('saved_figure-100dpi.png', dpi = 100) fig.savefig('saved_figure-1000dpi.png', dpi = 1000)
Это приводит к появлению трех новых файлов изображений на нашем локальном компьютере, каждый с разным DPI:

Значение по умолчанию — 100 .
Сохраните прозрачное изображение с помощью Matplotlib
Аргумент transparent может быть использован для создания участка с прозрачным фоном. Это полезно, если вы будете использовать графическое изображение в презентации, на бумаге или хотите представить его в настройках индивидуального дизайна:
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig('saved_figure.png', transparent=True)
Если мы поместим это изображение на темный фон, это приведет к:

Изменение цвета графика
Вы можете изменить цвет подложки, используя аргумент facecolor . Он принимает color и по умолчанию white .
Изменим его на red :
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig('saved_figure-colored.png', facecolor = 'red')

Настройка границы изображения
Аргумент bbox_inches принимает строку и определяет границу вокруг граффика. Если мы хотим установить его так tight , то есть максимально обрезать рамку, мы можем установить аргументу bbox_inches значение ‘tight’ :
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.savefig('saved_figure-tight.png', bbox_inches = 'tight', facecolor='red')
В результате получается плотно упакованная коробка. Это легче визуализировать, если для справки раскрасить края другим цветом:

Вывод
В этом уроке мы рассмотрели несколько способов сохранить график в виде файла изображения с помощью Matplotlib.
Как сделать анимацию в MATLAB и сохранить её в формате GIF
В прошлой заметке мы с вами создавали видеролик при помощи MATLAB. Иногда полезно иметь анимацию не в видео формате, а в виде популярного в интернете формата GIF.
За основу мы возьмём код и данные, которые использовали в вышеупомянутой заметке:
for n =1:365 worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. n),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') caxis([-80 40]) cmocean('thermal') colorbar title(datestr(t(n))) frame(n) = getframe(gcf); close(gcf) end v = VideoWriter('air_temp2018.mp4','MPEG-4'); v.FrameRate = 10; open(v) writeVideo(v,frame) close(v)
Напомню, что первая часть строит все нужные нам картинки (отдельные кадры будущего видео) и записывает их в переменную frame. Затем, используя эту самую переменную frame во второй части кода мы создаём их этих кадров видеоролик. Сейчас эта вторая часть нам не понадобится, мы теперь используем переменную frame для создания GIF. Давайте я сначала сразу приведу здесь готовый код, а уже потом сделаю некоторые пояснения:
for n = 1:size(frame,2) [A,map] = rgb2ind(frame2im(frame(n)),256); if n == 1 imwrite(A,map,'test1.gif','gif','LoopCount',Inf,'DelayTime',1); else imwrite(A,map,'test1.gif','gif','WriteMode','append','DelayTime',1); end end
Если вы не хотите разбираться, то можете прямо его использовать и не задумываться о деталях.
Итак, как вы наверное поняли, gif создаётся при помощи функции imwrite, которая создана, вообще говоря, для записи разных типов графических файлов, не только gif (png, jpg и т.п.).
GIF файл создаётся в несколько этапов, сначала создаётся первый кадр (он может остаться единственным, если нам не нужна анимация), в коде это отражено в строке, идущей сразу после «if n == 1». Затем остальные кадры анимации записываются в наш файл при помощи опции ‘WriteMode’,’append’.
Поскольку формат gif работает с индексированными цветами, то нам нужно перевести изображения из RGB в эти самые индексированные цвета, т.е. получить в нашем случае само изображение, которое будет записано в переменную A и карту цветов (т.е. какому цвету соответствует каждое число в переменной A), записанную в переменную map. Делает это всё функция rgb2ind. У нас, как вы видите, в качестве второго входного аргумента этой функции стоит число 256, это количество цветов, которые мы будем иметь в изображении. Если вам нужно уменьшить размер итогового файла, то вы может пожертвовать палитрой и создать гифку, состоящую из меньшего количества цветов. Например, так будет выглядить наша анимация, если мы оставим всего 8 цветов:
Также обратите внимание, что функция rgb2ind не поймёт, если вы попытаетесь скормить ей наши кадры, которые мы записывали в переменную frame, поэтому для начала мы должны перевести из в изображение при помощи функции frame2im.
Осталось только сказать, что ‘LoopCount’,Inf — означает, что наше изображение будет зацикленное, т.е. повторяться снова и снова, а ‘DelayTime’,1 — устанавливает задержку по времени между кадрами (в секундах).

Чтобы не пропустить новые материалы с рецептами по работе с океанологическими данными, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey
Данные для заметки:
NCEP Reanalysis data provided by the NOAA/OAR/ESRL PSD, Boulder, Colorado, USA, from their Web site at https://www.esrl.noaa.gov/psd/
Kalnay et al., The NCEP/NCAR 40-year reanalysis project, Bull. Amer. Meteor. Soc., 77, 437-470, 1996
Как сделать анимацию в MATLAB и сохранить видео в формате mp4

Часто учёным намного проще анализировать данные, когда они представлены в виде анимации. Сегодня мы сделаем простую анимацию в MATLAB и сохраним её в виде видео-файла в формате MPEG-4.
Для построения картинок мы будем использовать NCEP/NCAR Reanalysis с этого сайта. Я скачал ежедневные значения температуры воздуха у поверхности для 2018 года. Если хотите себе такие же, прямая ссылка вот.
Для начала загрузим наши данные в рабочую область Matlab:
air = ncread('air.sig995.2018.nc','air')-273.15; lat = ncread('air.sig995.2018.nc','lat'); lon = ncread('air.sig995.2018.nc','lon');
Обратите внимание, что мы вычли 273.15 из значений температуры, для того чтобы перевести их в градусы Цельсия (исходные данные в Кельвинах). Для последующих построений нам нужно будет перевести векторы lat и lon в матрицы:
[lon,lat]=ndgrid(lon,lat);
Вектор с датами проще будет создать вручную:
t = datetime(2018,01,01):datetime(2018,12,31);
Теперь можно построить карту. Пока, всё что мы делаем и дальнейшие построения карт не должны вызывать сложностей, так как всё уже было описано здесь на сайте. Однако на всякий случай сделаю некоторые краткие комментарии.
Строим карту (подложку) и ориентируем её так, чтобы по центру располагался 180 градус долготы:
worldmap('world') setm(gca,'Origin', [0 180 0])
Строим карту распределения температуры для первой даты нашего массива и добавляем на рисунок colorbar:
geoshow(lat,lon,air(. 1),'displaytype','texture') colorbar
Строим для ориентировки береговую черту и закрашиваем её белым цветом (белый только контур, сами берега прозрачные):
geoshow('landareas.shp','FaceColor','none','EdgeColor','w')
В качестве заголовка к рисунку используем дату:
title(datestr(t(1)))
Ну и при желании заменяем цветовую шкалу (сработает только если у вас установлен пакет cmocean):
cmocean('thermal')
Все строки кода для построения выглядят так:
worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. 1),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') cmocean('thermal') colorbar title(datestr(t(1)))
и приводят к следующему результату:

Допустим, вам нужно посмотреть на картину в динамике, т.е. в нашем случае — посмотреть, как изменяется температура со временем. Можно создать цикл и просто смотреть, как постепенно строятся картинки одна за одной. Если у вас не слишком мощный компьютер, то этот вариант будет выглядеть как анимация. Если же у вас мощный компьютер, которые строит карты слишком быстро, вы можете в середине цикла поставить паузу. Например, это может выглядеть так:
for n =1:365 worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. n),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') caxis([-80 40]) cmocean('thermal') colorbar title(datestr(t(n))) pause(0.5) end
В данном коде pause(0.5) означает паузу 0.5 секунд. Кроме того, я добавил caxis([-80 40]) — это жёсткое ограчинение границ цветов, чтобы они не менялись от карты к карте.
Однако, такая анимация годится только для быстрого анализа при работе с данными. Если же вы хотите получить анимацию в виде видео-файла, то сделать это можно следующим образом. На каждом витке цикла построенная картинка записывается в виде отдельного кадра при помощи специальной функции getframe. Например, мы создадим переменную frame, куда запишем все 365 построенных карт.
for n =1:10 worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. n),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') caxis([-80 40]) cmocean('thermal') colorbar title(datestr(t(n))) frame(n) = getframe(gcf); close(gcf) end
Обратите внимание, что кроме строки frame(n) = getframe(gcf) мы добавили ещё и close(gcf). В нашем случае это было делать не обязательно, так как функция worldmap закроет предыдущую карту в начале каждого цикла. Однако вы можете столкнуться с проблемой, когда все ваши кадры останутся открытыми, так что пусть будет.
Теперь, для того, чтобы записать анимацию в видео-файл нужно сделать следующее. Во-первых создать видеофайл и присвоить резултат этого действия какой-нибудь переменной (у нас это v), с помощью которой мы затем будем к нему обращаться:
v = VideoWriter('air_temp2018.mp4','MPEG-4');
При желании можно внести некоторые изменения в свойства файла, настроить всё под себя. Например, мне часто приходится менять частоту кадров:
v.FrameRate = 10; %10 frames per second
После всех настроек осталось открыть ваш созданный видео-файл, записать туда все кадры и закрыть файл:
open(v) writeVideo(v,frame) close(v)
Целиком весь код выглядит так:
for n =1:365 worldmap('world') setm(gca,'Origin', [0 180 0]) geoshow(lat,lon,air(. n),'displaytype','texture') geoshow('landareas.shp','FaceColor','none','EdgeColor','w') caxis([-80 40]) cmocean('thermal') colorbar title(datestr(t(n))) frame(n) = getframe(gcf); close(gcf) end v = VideoWriter('air_temp2018.mp4','MPEG-4'); v.FrameRate = 10; open(v) writeVideo(v,frame) close(v)

Чтобы не пропустить новые материалы с рецептами по работе с океанологическими данными, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey
Данные для заметки:
NCEP Reanalysis data provided by the NOAA/OAR/ESRL PSD, Boulder, Colorado, USA, from their Web site at https://www.esrl.noaa.gov/psd/
Kalnay et al., The NCEP/NCAR 40-year reanalysis project, Bull. Amer. Meteor. Soc., 77, 437-470, 1996