How can I normalize one input for Patch across a subplot?
2 次查看(过去 30 天)
显示 更早的评论
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1085345/image.png)
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);
0 个评论
采纳的回答
Walter Roberson
2022-8-2
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 个评论
Walter Roberson
2022-8-3
freeze_patch1 = copyobj(freeze_patch,ax1);
freeze_patch1.YData = max( min(freeze_patch1.YData, YUpperBound), YLowerBound );
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!