Matlab去除box图框上方和右侧刻度线的两种方法

您所在的位置:网站首页 怎么把标尺去掉图片 Matlab去除box图框上方和右侧刻度线的两种方法

Matlab去除box图框上方和右侧刻度线的两种方法

2024-07-05 17:46| 来源: 网络整理| 查看: 265

在用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