Matlab散点标记在绘图边缘溢出

Matlab散点标记在绘图边缘溢出,matlab,plot,matlab-figure,Matlab,Plot,Matlab Figure,我注意到,对于散点图和其他类型的图(如条形图),标记通常会溢出图边界。这个问题附带的图片就是一个例子:你可以看到绘图标记越过边界。这可以预防吗?如果可以,如何预防 只要数据点本身在绘图的x轴和y轴限制内,剪裁不会影响在每个数据点绘制的标记。MATLAB显示整个标记,即使它稍微延伸到轴的边界之外 “解决方案”是在绘图周围添加少量填充,使整个标记落在轴内 以下各项将x和y范围增加1% xlims = get(gca, 'xlim'); ylims = get(gca, 'ylim'); set(

我注意到,对于散点图和其他类型的图(如条形图),标记通常会溢出图边界。这个问题附带的图片就是一个例子:你可以看到绘图标记越过边界。这可以预防吗?如果可以,如何预防

只要数据点本身在绘图的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));

只要数据点本身在绘图的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));

这不是一种理想的方法,但我在轴范围之外的区域绘制了白色矩形

我生成了一个类似的图:

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')
此代码记录轴的现有范围,并在其外部绘制矩形。绘制矩形后,将恢复轴的范围,并将轴带到前面

我任意填充了
极端值。如果图形的轴区域占据的部分小得多,则可以使其变大;如果存在重叠风险的其他轴区域,则可以使其变小


结束了。

这不是一个理想的方法,但我在轴范围之外的区域绘制了白色矩形

我生成了一个类似的图:

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')
此代码记录轴的现有范围,并在其外部绘制矩形。绘制矩形后,将恢复轴的范围,并将轴带到前面

我任意填充了
极端值。如果图形的轴区域占据的部分小得多,则可以使其变大;如果存在重叠风险的其他轴区域,则可以使其变小

结束了