答案 0 :(得分:3)
markers themselves are not affected by the axes
Clipping
property
只要数据点本身位于绘图的x和y轴限制范围内,剪切不会影响在每个数据点绘制的标记。 MATLAB显示整个标记,即使它略微超出轴的边界。
"解决方案"将在您的绘图周围添加少量填充,以使整个标记落在轴内。
以下将x和y范围填充1%
$0
rec | year | ing
----|------|-----
1 | 2002 | a
1 | 2002 | b
1 | 2002 | c
2 | 2002 | e
. | . | .
. | . | .
3 | 2003 | a
$1
rec | year | ing
----|------|-----
5 | 2004 | a
5 | 2004 | b
4 | 2004 | c
4 | 2005 | e
. | . | .
. | . | .
6 | 2005 | a
答案 1 :(得分: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。