matlab绘图设置

设置ezplot的现款

说明
在MATLAB中绘制隐函数的图像或者绘制没有数据的函数,常常使用ezplot命令,但是这个命令有些缺点,就是无论你在这里面绘制了多少个函数,它返回的句柄只有一个,也就是说,使用这个函数绘制多条曲线时系统会默认把所有曲线当成一条,这也就限制了我们的许多操作,比如我们想单独对其中一条曲线的颜色进行修改,这就变得十分困难了,所以我们在使用这个命令前一定要三思,如果我们仅仅绘制一条曲线,那毫无疑问是非常方便的

只有一条曲线
当使用ezplot命令绘制的只有一条曲线时,我们可以使用句柄对曲线以及图像的各种参数进行修改

h = ezplot(s,[0 2500 ])
1
h就是返回的句柄,可以使用set对各种参数进行修改
如果我们要设置曲线的颜色时,使用

set(h,'color','k','LineWidth',3.5)
1
就轻松的对线条的颜色,粗细进行了修改

随意修改网格线和坐标轴显示

  • [matlab 帮助文档的 grid 参数表]
  • [几种常用的操作]
  • [设置网格线的密度]

matlab 帮助文档的 grid 参数表

在画图的时候发现有一根线刚好和网格线重叠了,导致显示的不太清楚,然后就想修改一下网格线的位置,然后将实现过程写了下来。
查了下资料发现基本都是修改了网格坐标轴也发生变化,如果想实现坐标轴数值和网格线分别设置,直接阅读设置网格线密度中的方法3。
属性 描述
XTick, YTick, ZTick Location of tick marks and major grid lines for each axis direction
XGrid, YGrid, ZGrid Display of major grid lines for each axis direction
XMinorGrid, YMinorGrid, ZMinorGrid Display of minor grid lines for each axis direction
LineWidth Line width of grid lines, axes box outline, and tick marks
GridLineStyle Major grid line style
MinorGridLineStyle Minor grid line style
GridColor Major grid line color
MinorGridColor Minor grid line color
GridAlpha Major grid line transparency
MinorGridAlpha Minor grid line transparency
Layer Location of grid lines with respect to the plotted data

几种常用的操作

1、打开关闭网格线

grid on;  % 打开
grid off;  % 关闭

2、设置线型,以虚线为例(线型的参数和 plot 线型是一样的)

set(gca, 'GridLineStyle', ':');  % 设置为虚线

img

似乎网格线有点不太清楚,不要着急,设置一下透明度就可以。
3、设置透明度

set(gca, 'GridAlpha', 1);  % 设置透明度,注意参数的范围是[0,1]

网格线变清楚了

img

下面重点来了,怎么设置网格线的密度呢!!!

设置网格线的密度

有三种方法,第一种是连同坐标也发生变化,第二种只更改网格线密度,但密度不能自由控制,第三种随意控制密度。以 x 轴为例。
当前的图 x 轴是 0:50 划为 10 段,每段长 5。

% 方法1
set(gca, 'XTick', 0:50/5:50);  % 此时划分为了5段,每段长10,网格线和坐标轴都发生了变化

这种方法实际上是更改了坐标轴的间隔。

img

在方法一图的基础上,坐标轴不变,将网格竖线变密。

% 方法2,这种方法无法自由控制网格线的密度
set(gca, 'XMinorGrid','on');

img

在方法 1 图的基础上将网格线变密两倍

% 方法3,可以自由控制
grid on;
set(gca, 'GridLineStyle', ':');  % 设置为虚线
set(gca, 'GridAlpha', 1);  % 设置透明度
set(gca, 'XTick', 0:50/10:50);  % 划分为10段,每段长5,这是想要的网格线数量
N = 2;  % 想要的坐标轴显示,即隔一个网格显示一个刻度,10/5 = 2
% 设置想要的坐标轴刻度
a = get(gca,'XTickLabel');  
b = cell(size(a));
b(mod(1:size(a,1),N)==1,:) = a(mod(1:size(a,1),N)==1,:);
set(gca,'XTickLabel',b);

img

大功告成!!
解释一下,XTick 和 XTickLabel 的区别:XTick 控制 X 轴上的那个小竖线,XTickLabel 用来控制 X 轴下面的数字显示,其他坐标轴也一样。再来看一下 a 和 b 是什么?

img

补充:

ylim([ymin,ymax]);%对Y轴设定显示范围

posted @ 2022-04-12 16:10  Indullged  阅读(894)  评论(0编辑  收藏  举报