В этом примере показано, как задать области в изображении как гиперссылки. Гиперссылки можно задать так, чтобы они ссылались на целевую веб-страницу или переходили в другое место в том же отчете.
Импортируйте пакеты DOM и Report API, чтобы не использовать длинные, полные имена классов.
import mlreportgen.dom.* import mlreportgen.report.*
Создание и открытие отчета.
% To create an HTML report, change "pdf” to “html” or "html-file" for a % multifile or single-file report, respectively. rpt = Report("myreport","pdf"); open(rpt);
Добавить абзац в отчет.
content = "Click on a subplot to navigate to the corresponding " + ... "trigonometric function documentation."; add(rpt,Paragraph(content));
Создайте рисунок с несколькими подграфиками для различных тригонометрических функций.
figH = figure; x = linspace(0,10); sinePlot = subplot(3,2,1,"Units","pixels"); plot(x,sin(x)); title("Sine: sin(x)"); cosinePlot = subplot(3,2,2,"Units","pixels"); plot(x,cos(x)); title("Cosine: cos(x)"); secantPlot = subplot(3,2,3,"Units","pixels"); plot(x,sec(x)); title("Secant: sec(x)"); cosecantPlot = subplot(3,2,4,"Units","pixels"); plot(x,csc(x)); title("Cosecant: csc(x)"); tangentPlot = subplot(3,2,5,"Units","pixels"); plot(x,tan(x)); title("Tangent: tan(x)"); cotangentPlot = subplot(3,2,6,"Units","pixels"); plot(x,cot(x)); title("Cotangent: cot(x)");
Используйте Figure reporter, чтобы получить снимок рисунка. Используйте изображение DOM, чтобы включить снимок в отчет.
figReporter = Figure("Source",figH,"SnapshotFormat","jpg"); imgPath = getSnapshotImage(figReporter,rpt); figImg = Image(imgPath);
Создайте карту изображений на снимке с областью изображений для каждого подграфика. Функция getCoords, заданная в конце этого примера, получает координаты каждого подграфика. Целью для области изображения подграфика является веб-страница документации для тригонометрической функции, которая используется для создания этого подграфика. Затем добавьте снимок в отчет.
map = ImageMap; sinePlotCoords = getCoords(sinePlot); sinePlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/sin.html", ... "Sine",sinePlotCoords); append(map,sinePlotArea); cosinePlotCoords = getCoords(cosinePlot); cosinePlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/cos.html", ... "Cosine",cosinePlotCoords); append(map,cosinePlotArea); secantPlotCoords = getCoords(secantPlot); secantPlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/sec.html", ... "Secant",secantPlotCoords); append(map,secantPlotArea); cosecantPlotCoords = getCoords(cosecantPlot); cosecantPlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/csc.html", ... "Cosecant",cosecantPlotCoords); append(map,cosecantPlotArea); tangentPlotCoords = getCoords(tangentPlot); tangentPlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/tan.html", ... "Tangent",tangentPlotCoords); append(map,tangentPlotArea); cotangentPlotCoords = getCoords(cotangentPlot); cotangentPlotArea = ImageArea("https://www.mathworks.com/help/matlab/ref/cot.html", ... "Cotangent",cotangentPlotCoords); append(map,cotangentPlotArea); figImg.Map = map; add(rpt,figImg);
Удалите окно рисунка. Закройте и просмотрите отчет.
close(rpt); delete(figH); rptview(rpt);
Следующая функция вычисляет и возвращает верхние левые и нижние правые координаты для заданного подграфика на его родительском рисунке. Эти координаты вычисляются путем преобразования координат осей подграфиков, основанных на системе координат рисунка, где ее опорной точкой является нижняя левая, в систему координат DOM ImageArea, где ее опорной точкой является левая верхняя часть изображения.
function coords = getCoords(subplot) subplotWidth = subplot.Position(3); subplotHeight = subplot.Position(4); fig = subplot.Parent; figHeight = fig.Position(4); x1 = subplot.Position(1); y1 = figHeight - (subplot.Position(2) + subplotHeight); x2 = x1 + subplotWidth; y2 = y1 + subplotHeight; coords = [x1, y1, x2, y2]; end