В этом примере показано, как создать отчет, содержащий как ландшафт 11 x 8,5, так и портретные страницы 8,5 x 11. Отчет использует пейзажную страницу, чтобы соответствовать содержимому, которое является слишком широким, чтобы помещаться на портретной странице, например, эти параллельные изображения.
Импортируйте пакеты DOM и Report API, чтобы не использовать длинные имена классов.
import mlreportgen.dom.*; import mlreportgen.report.*;
Создайте контейнер для хранения содержимого отчета.
% To create a Word report, change the output type from "pdf" to "docx". rpt = mlreportgen.report.Report("PortraitAndLandscapeReport", "pdf");
Составьте главу с заголовком «Типы графиков косинусоидных значений со случайным шумом».
chapter = Chapter("Title", "Types of Cosine Value Plots with Random Noise");
Установите значение ландшафта размещения главы равным true. При этом всёсь размещение главы будет устанавливаемо на ландшафт.
chapter.Layout.Landscape = true;
Создайте переменные для построения графика. Создайте x как 200 значений с равными интервалами между 0 и 3pi. Создайте значения y как косинуса со случайным шумом.
x = linspace(0,3*pi,200); y = cos(x) + rand(1,200);
Создать рисунок объекты значений x и y: Гистограмма (рис. 1), график поля точек (рис. 2) и 2D графика (рис. 3).
Создайте объекты изображений, обернутые вокруг файлов изображений моментального снимка рисунка. Установите масштабирование объектов рисунка так, чтобы они помещались в записи таблицы.
imgStyle = {ScaleToFit(true)}; fig1 = Figure(bar(x, y)); fig1Img = Image(getSnapshotImage(fig1, rpt)); fig1Img.Style = imgStyle; delete(gcf); fig2 = Figure(scatter(x,y)); fig2Img = Image(getSnapshotImage(fig2, rpt)); fig2Img.Style = imgStyle; delete(gcf); fig3 = Figure(plot(x,y)); fig3Img = Image(getSnapshotImage(fig3, rpt)); fig3Img.Style = imgStyle; delete(gcf);
Вставьте изображения в единственную строку таблицы невидимого размещения 1x5 (lo_table) (пространство между рисунками при наличии 2 пустых записей таблицы). Таблица считается невидимой, если границы не определены ни для таблицы, ни для ее записей. Размеры изображений соответствуют значениям в таблице, только если заданы высота и ширина записей таблицы.
lo_table = Table({fig1Img, ' ', fig2Img, ' ',fig3Img}); lo_table.entry(1,1).Style = {Width('3.2in'), Height('3in')}; lo_table.entry(1,2).Style = {Width('.2in'), Height('3in')}; lo_table.entry(1,3).Style = {Width('3.2in'), Height('3in')}; lo_table.entry(1,4).Style = {Width('.2in'), Height('3in')}; lo_table.entry(1,5).Style = {Width('3in'), Height('3in')};
Добавить таблицу в главу и главу в отчет.
add(chapter, lo_table); add(rpt, chapter);
Составьте главу с заголовком «Поверхностный график». Для главы раскладки по умолчанию портрет.
chapter1 = Chapter("Title", "Surface Plot");
Создайте объект рисунка для объемной поверхностной диаграммы (фиг.4). Создайте объекты изображений, обернутые вокруг файлов изображений моментального снимка рисунка.
fig4 = Figure(surf(peaks(20))); fig4Img = Image(getSnapshotImage(fig4, rpt)); fig4Img.Style = imgStyle; delete(gcf);
Добавьте сгенерированный объект изображения в главу и главу в отчет.
add(chapter1, fig4Img); add(rpt, chapter1);
Сгенерируйте и отобразите отчет
close(rpt); rptview(rpt);
Сгенерированный отчет включает параллельные снимки рисунка на пейзажной странице и объемная поверхностная диаграмма на портретной странице.