Этот пример показывает, как задать области в изображении как гиперссылки. Можно задать гиперссылки так, чтобы они соединились с целевой веб-страницей или перешли к другому местоположению в том же отчете.
Импортируйте DOM и пакеты 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)");
Используйте генератор отчетов фигуры, чтобы получить снимок состояния фигуры. Используйте Изображение DOM, чтобы включать снимок состояния в отчет.
figReporter = Figure("Source",figH,"SnapshotFormat","pdf"); 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