Как сохранить фигуру MATLAB в формате JPEG с помощью saveas () без плохого отрыва изображения?
в функции MATLAB, которую я пишу, я генерирую фигуру. Рисунок отображается при выполнении функции. Мне нужно сохранить рисунок в формате JPEG. Для этого я мог бы сделать File->Save As в окне рисунка, которое отображает рисунок. Но я хотел бы автоматизировать это. Я попытался сделать это с помощью функции saveas (). Проблема в том, что полученное изображение нежелательно. Вот изображения для демо-задачи, чтобы показать вам, что я имею в виду:
сохраненное изображение JPEG вручную с помощью File — >Save As в окне MATLAB figure: 
изображение JPEG, сохраненное с помощью функции saveas () (обратите внимание, что графики не так хороши, а заголовки перекрываются): 
вот функция MATLAB, в которой я генерирую рисунок и сохраняю его как JPEG с помощью saveas ():
фигура, отображаемая при выполнении JpgSaveIssueDemo (), не максимизируется. Так что я подумал, что если бы я мог максимизировать его использование функции call / s в JpgSaveIssueDemo ()до saveas() выполняется, тогда сохраненное изображение JPEG выйдет хорошо.
Итак, я использовал этот код перед строкой saveas () в JpgSaveIssueDemo (), чтобы максимизировать цифру:
затем отображается развернутая фигура. Однако результат тот же: изображение JPEG по-прежнему выходит нежелательно.
что можно сделать для этого?
3 ответов
диалоговое окно экспорта фигур Matlab и saveas() функции не хватает много желаемой функциональности. Особенно, savas() не удается создать пользовательское изображение resoultion, поэтому ваши результаты выглядят плохо. Для создания растровых изображений настоятельно рекомендую использовать стороннюю функцию export_fig. Добавив следующий код в свою функцию (включая трюк максимизации)
Я создал это изображение: (используйте «показать изображение» или подобное в вашем браузере, чтобы получить оригинальный размер)

для более высокого качества используйте более высокое разрешение 150 или даже 300 dpi (для печати). Вместо того, чтобы максимизировать окно рисунка, для большинства приложений подходит определение размера оси для получения изображения нужного размера:
просто используйте масштабируемый формат без потерь, такой как EPS, см. последнюю строку в фрагменте ниже:)
Я не могу прикрепить файл EPS здесь, хотя, не поддерживается, но его масштабируемый и может быть помещен в текстовые процессоры или Latex, не беспокоясь о плохом разрешении.
у меня была такая же проблема, и вот что я использовал, чтобы решить это:
Документация
Сохраните график как файл векторной графики или растровую графику
Можно сохранить графики как изображения или как файлы векторной графики с помощью или кнопки экспорта на панели инструментов осей, или путем вызова exportgraphics функция. При решении между двумя типами содержимого рассмотрите качество, размер файла и требования форматирования для документа, в который вы помещаете файл.
Изображения поддерживаются в большинстве приложений. Они полезны для представления графических изображений и объединяют поверхности. Однако, потому что они составили из пикселей, они не всегда масштабируются хорошо, когда вы распечатываете или отображаете их на других устройствах, которые имеют различные разрешения. В некоторых случаях вы можете должны быть сохранить образ с достаточным количеством разрешения, чтобы удовлетворить определенным требованиям к уровню качества. Более высокие файлы разрешения имеют тенденцию быть больше, который может сделать их трудными совместно использовать в электронном письме или загрузке на сервер. Это может также затруднить, чтобы отредактировать линии и текст в изображении, не вводя артефакты.
Файлы векторной графики содержат инструкции для проведения линий, кривых и многоугольников. Они полезны для представления содержимого, состоящего из линий, кривых и областей сплошного цвета. Эти файлы содержат высококачественное содержимое, которое масштабируемо к любому размеру. Однако некоторые поверхности и сетчатые графики являются слишком сложными, чтобы быть представленными с помощью векторной графики. Некоторое интенсивное редактирование поддержки приложений файлов векторной графики, в то время как другая поддержка приложений, только изменяющая размер графики.
Независимо от того, сохраняете ли вы свои графики как изображения или как файлы векторной графики, можно получить лучшие результаты путем завершения содержимого в MATLAB ® фигурируйте прежде, чем сохранить ваш файл.
Сохраните графики в интерактивном режиме
Чтобы сохранить график с помощью интерактивных способов управления, используйте кнопку экспорта на панели инструментов осей. Панель инструментов появляется, когда вы наводите на правый верхний угол осей. Кнопка экспорта поддерживает три формата изображения (PNG, JPEG и TIFF), а также файлы PDF, которые могут содержать изображения или векторную графику, в зависимости от содержимого в осях.
Например, создайте столбчатую диаграмму. Сохраните график в файл путем наведения на кнопку экспорта на панели инструментов осей и выбора первого элемента в выпадающем списке.
Заметки про Matlab. Экспорт графиков.
О последнем пункте и пойдет речь в статье. Как это ни странно, Matlab для создания графиков довольно плох (особенно по меркам современности). Казалось бы, создание графиков в Matlab должно быть козырем программы. Но графики в Matlab обладают рядом изъянов. И это не только «вина» разработчиков Matlab, но и особенности аккумулируемых в Matlab технологий для производства этих графиков.
Создание графиков в Matlab
Одной из лучших статей по теме является запись в блоге одного из разработчиков Matlab — Loren Shure.
Для быстрого ознакомления с графикой в Matlab рекомендую ознакомиться со статьей выше.
Чтобы автоматизировать большинство нужных операций для создания красивых графиков, можно внести изменения в файл startup.m (в папке MatlabFolder/toolbox/local). Этот файл содержит пользовательские настройки, которые подключаются при запуске Matlab.
Для редактирования файла startup.m можно в консоли Matlab набрать команду:
В файле startup.m я использую следующие настройки:
Все параметры по умолчанию, которые можно изменить в файле startup.m можно посмотреть, выполнив в консоли Matlab команду
Пример кода Matlab для создания графика

Для создания легенды рекомендую использовать сразу в команде 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 по умолчанию для любой новой фигуры командой: