Matlab如何删除图框上方和右侧刻度线?

文摘   科技   2024-09-25 11:03   山东  

在用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等,都会有问题。

以上。


如果你觉得我的分享对你有帮助的话,欢迎大家在这里点赞、在看、分享。当然,也欢迎大家在这里打赏。互动越多,更新越快哦~

声明:本公众号的所有原创内容,在未经允许的情况下,不得用于任何商业用途,违者必究。

阿昆的科研日常
测绘科普,经验分享,科研日常,蜜汁脑洞
 最新文章