2016-09-19 55 views
0

我注意到,对于散点图和其他类型的地块如条形图,通常标记会溢出地块边界的边界。附在这个问题上的图片就是一个例子:你可以看到情节标记越过边界。这可以防止,如果是的话如何?Matlab散点标记在地块边缘出血

enter image description here

回答

0

这不是一种理想的方法,但我画白色矩形过的区域中的轴的范围之外。

我产生了类似的情节:

x=0:.02:1; plot(x,sin(2*pi*x),'o-') 

然后,我用下面的代码:

xl = get(gca,'XLim'); 
yl = get(gca,'YLim'); 
set(gca,'clipping','off') 
extremes = [xl(2)-xl(1), yl(2)-yl(1)]; 
rectangle('Position',[xl(1)-extremes(1), yl(2)   , 3*extremes(1), extremes(2)],'FaceColor',[1 1 1],'EdgeColor','none'); % Top 
rectangle('Position',[xl(1)-extremes(1), yl(1)-extremes(2), 3*extremes(1), extremes(2)],'FaceColor',[1 1 1],'EdgeColor','none'); % Bottom 
rectangle('Position',[xl(2)   , yl(1)-extremes(2), extremes(1), 3*extremes(2)],'FaceColor',[1 1 1],'EdgeColor','none'); % Right 
rectangle('Position',[xl(1)-extremes(1), yl(1)-extremes(2), extremes(1), 3*extremes(2)],'FaceColor',[1 1 1],'EdgeColor','none'); % Left 
set(gca,'XLim',xl); 
set(gca,'YLim',yl); 
set(gca,'box','on') 
set(gca,'Layer','top') 

此代码注意到轴的现有范围,并提请他们之外的矩形。矩形绘制完成后,轴的范围将恢复,并且轴被置于前面。

我随意填写extremes。如果图形的轴区域占据更小的部分,则可以变大,或者如果存在其他轴区域有重叠的风险,则可以变小。

这里是结束result

3

markers themselves are not affected by the axesClipping property

裁剪不影响在每个数据绘制标记点,只要该数据点本身的情节的x和y轴范围内。 MATLAB显示整个标记,即使它稍微延伸到轴的边界之外。

“解决方案”将在您的情节周围添加少量填充,以便标记的整体位于坐标轴内。

下面垫x和y范围1%

xlims = get(gca, 'xlim'); 
ylims = get(gca, 'ylim'); 

set(gca, 'xlim', xlims + [-0.01 0.01] * diff(xlims), ... 
     'ylim', ylims + [-0.01 0.01] * diff(ylims)); 

enter image description here