У меня проблема с фигурой, которую я пытался создать в MATLAB. Позвольте мне предоставить вам некоторую справку и справочную информацию, прежде чем вдаваться в детали.

Я готовлю отчет для школы и стараюсь, чтобы мои результаты отображались четко и профессионально. Я не могу использовать LaTeX (это ИСПРАВЛЕНО, поверьте мне, я бы предпочел его использовать), и поэтому я набираю его в MS Word.

В общем, я обнаружил, что использование MATLAB для создания графиков моих данных дало очень хорошие результаты. В частности, я обнаружил, что файлы .emf дают наилучшие изображения (насколько я могу судить, они являются векторными изображениями, они не пикселируются / не ухудшаются при увеличении масштаба). Я использую MATLAB 2016b.

В MS Word я делаю следующее:

  1. Вставить
  2. Текст
  3. Быстрые Части
  4. поля
  5. INCLUDEPICTURE
  6. Затем я связываю файл в диалоговом окне, а также отмечаю флажки "изменить размер по горизонтали и по вертикали из источника".

В MATLAB я делаю следующее:

  1. Создать фигуру, используя plot
  2. Используйте дескриптор рисунка (например, MyFig.Property = Something), чтобы установить PaperUnits в дюймах
  3. Используйте дескриптор PaperPosition = [ 0 0 6 4 ] (соответствует фигуре 6 дюймов в ширину и 4 дюйма в высоту
  4. Наконец, я использую функцию saveas для сохранения рисунка в виде meta (расширенный метафайл Windows, .emf)

Конечный результат - именно то, что я хочу, и он отображается в документе MS Word как векторное изображение (как описано выше, сохраняет качество векторного изображения при сохранении слова doc в формате PDF). Я легко могу обновить графики в слове документа, обновив все поля. Я ценю этот рабочий процесс / автоматизацию и хотел бы поддерживать его, если это возможно.

Моя проблема возникает, когда я пытаюсь применить этот процесс к одному из моих графиков, для которого требуются две оси Y. На этом рисунке я отличаюсь от остальных следующим:

  1. Используйте yyaxis left и right чтобы создать две оси Y
  2. Используйте свойство YAxis из gca для выравнивания засечек два у-осей
  3. После этого я применяю тот же процесс MATLAB для сохранения рисунка, как описано выше.

Проблема в том, что сохраненный файл .emf НЕ является векторным изображением (в отличие от других). Это явно выглядит хуже, и это пикселирует, когда я увеличиваю. Если я удаляю вторую ось Y, она снова работает нормально.

У кого-нибудь есть какие-либо идеи по оси Y о том, что может быть причиной этого и как я могу решить эту проблему? Я попробовал следующее безуспешно:

  • варьируя размер от 6х4 дюймов
  • Снимите флажок "Изменить размер по горизонтали и вертикали в MS Word"
  • изменяя размер шрифта рисунка (делая его меньше)

Собираюсь ли я сохранить свои данные правильно или есть лучший способ сделать это?

Есть ли какая-либо дополнительная информация, которую я могу предоставить, чтобы помочь решить эту проблему?

1 ответ1

0

Я решил проблему.

Проблема, похоже, заключалась в том, что когда я добавил в график вторую ось, MATLAB по умолчанию использовал другой рендерер для фигуры. В частности, тот, который создает растровое изображение, следовательно, качество мусора конечного продукта. Я понятия не имею, почему он это сделал, но триггер для этого (так как по умолчанию использовался правильный рендерер для всех графиков с одной осью Y) был второй осью Y.

Я исправил проблему, просто заставив конкретную фигуру рендериться с использованием соответствующего средства визуализации (называемого "художниками", см. Ниже).

myfig.Renderer = 'painters';

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .