Matlab去除box图框上方和右侧刻度线的两种方法 |
您所在的位置:网站首页 › 怎么把标尺去掉图片 › Matlab去除box图框上方和右侧刻度线的两种方法 |
在用Matlab进行绘图时,如果显示坐标区轮廓,也就是‘box on’状态,有的时候,会感觉上方和右侧轮廓上的刻度有些难看、有些多余: 而如果不显示坐标区轮廓,也就是‘box off’状态,又会感觉有些空洞: 于是想:有没有办法,只显示上方和右侧的坐标区轮廓,但是不显示其上的刻度线呢? 找了一下,Matlab中似乎并没有单独的命令可以得到这样的效果。 但是,如果脑袋灵活些,办法总比困难多。 这里简单介绍两种思路。 1. 画线法这一方法的思路非常简单,就是在坐标区上方和右侧的边缘,使用plot或者line命令画两条线(绘制前需要box off): 具体来说,当我们作图完成,且坐标区的属性也调节完毕后: lw = 1; % 坐标轴线宽x = 0:0.1:2*pi;y = sin(x);figureplot(x,y,'linewidth', 1.5, 'color', 'c')set(gca,'box', 'off',... 'linewidth',lw,... 'TickDir','out',... 'xlim', [0 2*pi],... 'ylim', [-1.2 1.2])首先找到坐标区四个顶点的位置: XL = get(gca,'xlim'); XR = XL(2);YL = get(gca,'ylim'); YT = YL(2);然后使用plot命令在坐标区边界的上方和右侧分别绘制一条直线: plot(XL,YT*ones(size(XL)),'color',xc,'linewidth',lw)plot(XR*ones(size(YL)),YL,'color',yc,'linewidth',lw)特别注意,绘制的两条线的属性,比如线宽、颜色等,应该与原坐标区框线的一致。 此外,上方和右侧的框线应该在所有属性都调整无误后再添加。 2. 新建坐标区法这一方法的思路就是在原坐标区位置再使用axes命令重新绘制一个没有刻度的坐标区: 具体来说,当我们作图完成,且坐标区的属性也调节完毕后: lw = 2; % 坐标轴线宽x = 0:0.1:2*pi;y = sin(x);figureplot(x,y,'linewidth', 1.5, 'color', 'r')set(gca, 'box', 'off',... 'linewidth',lw,... 'TickDir','out',... 'xlim', [0 2*pi],... 'ylim', [-1.2 1.2])使用axes命令在原gca的position创建一个坐标区,其中x和y轴的刻度设置为上方和右侧: ax = axes( 'Units', unit,... 'Position',get(gca,'Position'),... 'XAxisLocation','top',... 'YAxisLocation','right',... 'Color','none',... 'XColor',xc,... 'YColor',yc);然后,将x和y轴的刻度设置为空即可: set(ax, 'linewidth',lw,... 'XTick', [],... 'YTick', []);同样要注意,绘制的坐标区轮廓的属性,比如线宽、颜色等,应该与原坐标区框线的一致。 特别要注意的是,上方和右侧的框线应该在所有属性都调整无误后再添加,否则,由于改变了x、y坐标轴的位置,很多命令,比如xlabel,ylabel等,都会有问题。 以上。 示例程序获取方式:Matlab示例程序 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |