Ensure that patch is displayed

17 次查看(过去 30 天)
I want to ensure that the patchs I plot are always displayed, not depending if they are to small compared to the current axes units.
The following minimal plot illustrates the issue:
axisLim=10000;
figure
hold on
plot(1:axisLim);
p1=patch([10 10 500 500],[0 axisLim axisLim 0],[1 1 1 1],
'EdgeColor','none',wFaceColor','r')
p2=patch([9000 9000 9001 9001],[0 axisLim axisLim 0],[1 1 1 1],
'FaceColor','r','EdgeColor','none')
The patch p1 will be visible, whereas the second won't. How can I make sure that all patchs are visible?

采纳的回答

Werner
Werner 2013-8-14
To obtain the desired effect (always show the patches in-dependably on how small they are, put the 'EdgeColor' the same color as the 'FaceColor'.
axisLim=10000;
figure
hold on
plot(1:axisLim);
p1=patch([10 10 500 500],[0 axisLim axisLim 0],[1 1 1 1],...
'EdgeColor','r','FaceColor','r')
p2=patch([9000 9000 9010 9010],[0 axisLim axisLim 0],[1 1 1 1],...
'FaceColor','r','EdgeColor','r')
hold off
I think this behavior should make sense with another pair value variable, such as ('appearIfThickerThan',Units), where units could be specified with percentage axes units or inches or so on. The 'FaceColor',and 'EdgeColor' should work the same way if I use 'EdgeColor','none' or 'EdgeColor' with the same color as the 'FaceColor'.

更多回答(1 个)

David Sanchez
David Sanchez 2013-8-14
Your second patch is visible if you zoom in the plot. Since you are drawing a patch so thin ( from 9000 to 9001 ) the resolution of the screen is not enough to make it visible. On the other hand, if you zoom in your plot in that region, you'll see your second patch right there. I would recommend a wider patch of at least 10 units:
axisLim=10000;
figure
hold on
plot(1:axisLim);
p1=patch([10 10 500 500],[0 axisLim axisLim 0],[1 1 1 1],...
'EdgeColor','none','FaceColor','r')
p2=patch([9000 9000 9010 9010],[0 axisLim axisLim 0],[1 1 1 1],...
'FaceColor','b','EdgeColor','none')
hold off
  3 个评论
Walter Roberson
Walter Roberson 2013-8-14
You can also zoom by setting xlim and ylim after you plot. This is how the magnifier tool works internally, other than the tool doing some house-keeping to keep track of the previous zooms so that you can zoom out to what you had before.
Werner
Werner 2013-8-14
Yes, this is what it makes you think, that the resolution is not enough to show the patch. But, that is not the behavior I want, I would expect it to show the lines independent on how small or thin they are.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Contour Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by