How can I normalize one input for Patch across a subplot?

6 Ansichten (letzte 30 Tage)
Hi there, I'm trying to use Patch to show areas of a graph where a certain event is occuring. What I want to do is have these bars show up on every figure in my subplot (which share the same x-axis), but scale the y-axis coordinates for each graph.
I was trying to use copyobj, but the maximum y-axis values are different for each part of the subplot. Here's the code for generating my patches currently - can I use 'Units','Normalized' or something similar for just the y values? Or do I have to manually put these patches into each figure
freeze_logger = [833 1394 10243 10807 19960 20528 29573 30135 38800 39362 48023 48584 57726 58292];
SEC2HRS = 2.7778e-04;
x_freeze = repelem(freeze_logger,2)*60*SEC2HRS;
y_freeze = repmat([-1e5 1e5 1e5 -1e5], 1,length(freeze_logger)/2);
freeze_patch = patch(x_freeze,y_freeze,'red','FaceAlpha',.3);

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 2 Aug. 2022
Use coordinates -inf and +inf . Then you can copyobj . Then in the copied object you can use
max( min(YCoordinates, YUpperBound), YLowerBound )
to compute the new coordinates without needing any logical indexing or anything like that.
  3 Kommentare
Walter Roberson
Walter Roberson am 3 Aug. 2022
freeze_patch1 = copyobj(freeze_patch,ax1);
freeze_patch1.YData = max( min(freeze_patch1.YData, YUpperBound), YLowerBound );
Kip Risch-Andrews
Kip Risch-Andrews am 3 Aug. 2022
Works perfectly, thank you so much for the help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by