Efficient generation of high-density graphics

조회 수: 2 (최근 30일)
Gabriel Stanley
Gabriel Stanley 2022년 9월 26일
편집: Gabriel Stanley 2022년 9월 26일
I have a two large arrays that I wish to graph (for each interation of a loop within a function, so there will be alot of these pairs). In order to minimize the time the overall function takes to execute, I would like to know how to implement the following best practices:
  1. How can I stop MatLab from plotting occluded elements/lines in a 2x1 surface plot?
  2. How might I go about reducing the data that is fed into the surface plot so that I avoid "creating straight lines with mutiple data points"? Is this practice even relevant to surface plots?
  3. For my specific use case, I'm trying to create 4 views of the 2x1 surface object. How do (and/or should I) prevent MatLab from drawing the object (which I assume takes the most time) until all 4 views are setup?
  4. As an addendum to (3), which of subplot and tiledlayout do you think is better for this task?
Finally, can someone explain why this
SurfaceFigure = figure()
SurfaceLayout - tiledlayout(SurfaceFigure,2,2,'Padding','compact');
axesTop = nextile(1);
xlabel(axesTop,'Data Label 1'); ylabel(axesTop,'Data Label 2'); zlabel(axesTop,'Data Label 3');
axis(axesTop,'tight'); view(axesTop,0,90)
surface(XData,YData,ZData1,'FaceColor','k','EdgeColor','none');
surface(XData,YData,ZData2,'FaceColor','y','EdgeColor','none');
axesIso = nextile(2);
xlabel(axesIso,'Data Label 1'); ylabel(axesIso,'Data Label 2'); zlabel(axesIso,'Data Label 3');
axis(axesIso,'tight'); view(axesIso,-45,45)
surface(XData,YData,ZData1,'FaceColor','k','EdgeColor','none');
surface(XData,YData,ZData2,'FaceColor','y','EdgeColor','none');
axesFront = nextile(3);
xlabel(axesFront,'Data Label 1'); ylabel(axesFront,'Data Label 2'); zlabel(axesFront,'Data Label 3');
axis(axesFront,'tight'); view(axesFront,90,0)
surface(XData,YData,ZData1,'FaceColor','k','EdgeColor','none');
surface(XData,YData,ZData2,'FaceColor','y','EdgeColor','none');
axesRight = nextile(4);
xlabel(axesRight,'Data Label 1'); ylabel(axesRight,'Data Label 2'); zlabel(axesRight,'Data Label 3');
axis(axesRight,'tight'); view(axesRight,0,0)
surface(XData,YData,ZData1,'FaceColor','k','EdgeColor','none');
surface(XData,YData,ZData2,'FaceColor','y','EdgeColor','none');
is taking a shade under a minute while this
SurfaceFigure = figure()
SurfaceLayout - tiledlayout(SurfaceFigure,2,2,'Padding','compact');
axesTop = nextile(1);
xlabel('Data Label 1'); ylabel('Data Label 2'); zlabel('Data Label 3'); axis tight; view(0,90)
Surface1 = surface(XData,YData,ZData1,'FaceColor','k','EdgeColor','none');
Surface2 = surface(XData,YData,ZData2,'FaceColor','y','EdgeColor','none');
Surfaces = [Surface1,Surface2];
tic
axesIso = nextile(2);
copyobj(Surfaces,axesIso);
toc
is taking ~612 seconds?
Once I have the visuals figured out, I will set the initial figure visibility to off and use getframe if possible, otherwise saveas or print to export the figure to a png.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by