根据图窗大小调整报告页面方向
此示例说明如何根据追加的图窗的大小来调整报告的页面布局。根据图窗大小的不同,某些图窗在横向或纵向页面方向下可能更易于阅读。在此示例中,您将创建三个不同大小的图窗,并根据大小调整页面方向。
设置报告器环境
导入 dom、utilis 和 report 包的命名空间。导入这些命名空间可以缩短您在代码中需要使用的报告器构造函数名称。
import mlreportgen.dom.* import mlreportgen.utils.* import mlreportgen.report.*
创建一个报告文档来包含图窗。添加标题页和目录。
rpt = Report("myReport","pdf"); append(rpt,TitlePage("Title","My Dynamic Plot Report")); append(rpt,TableOfContents);
生成图窗
关闭所有现有图窗,然后在三个不同的图窗窗口中创建三个绘图。使用 gcf 函数捕获 MATLAB® 图窗窗口的句柄。
close all figure peaks(20); myFigure(1) = gcf; myFigure(1).Name = "Peaks"; myFigure(1).Position = [1 1 800 900]; figure sphere(20); myFigure(2) = gcf; myFigure(2).Name = "Sphere"; myFigure(2).Position = [1 1 800 800]; figure L = 160*membrane(1,100); s = surface(L); s.EdgeColor = "none"; view(3) myFigure(3) = gcf; myFigure(3).Name = "Membrane"; myFigure(3).Position = [1 1 1290 800];
将图窗追加到报告中并调整页面布局
要将图窗追加到报告中并根据图窗大小调整页面布局,请执行以下操作:
创建一个
Figure报告器。从图窗的快照创建一个
Image报告器。Image报告器在Width和Height属性中包含快照的宽度和高度信息。定义一个
PDFPageLayout对象,并根据Image报告器的Width和Height属性来调整PageSize.Orientation属性。将
PDFPageLayout对象追加到报告中。将
Figure报告器追加到报告中。
对于此示例,使用以下代码为三个图窗创建 Figure 和 Image 对象。当图窗的宽度大于高度时,代码将页面方向设置为 "landscape"。否则,将方向设置为 "portrait"。
for n = 1:length(myFigure) fig(n) = Figure(myFigure(n)); img(n) = Image(getSnapshotImage(fig(n),rpt)); width = units.toPixels(img(n).Width); height = units.toPixels(img(n).Height); plo = PDFPageLayout; if width > height plo.PageSize.Orientation = "landscape"; width = plo.PageSize.Width; plo.PageSize.Width = plo.PageSize.Height; plo.PageSize.Height = width; else plo.PageSize.Orientation = "portrait"; end head = Heading2(myFigure(n).Name); append(rpt,plo); head.Style = [head.Style,{PageBreakBefore,Bold,FontSize("18pt")}]; append(rpt,head); append(rpt,fig(n)); end
查看报告
打开报告以查看图像。前两个图像在纵向页面上,最后一个图像在横向页面上。
close(rpt); rptview(rpt);
此图显示了报告的最后两页。
