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示例程序​​​​​​​

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值