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', ':'); % 设置为虚线
似乎网格线有点不太清楚,不要着急,设置一下透明度就可以。
3、设置透明度
set(gca, 'GridAlpha', 1); % 设置透明度,注意参数的范围是[0,1]
网格线变清楚了
下面重点来了,怎么设置网格线的密度呢!!!
设置网格线的密度
有三种方法,第一种是连同坐标也发生变化,第二种只更改网格线密度,但密度不能自由控制,第三种随意控制密度。以 x 轴为例。
当前的图 x 轴是 0:50 划为 10 段,每段长 5。
% 方法1
set(gca, 'XTick', 0:50/5:50); % 此时划分为了5段,每段长10,网格线和坐标轴都发生了变化
这种方法实际上是更改了坐标轴的间隔。
在方法一图的基础上,坐标轴不变,将网格竖线变密。
% 方法2,这种方法无法自由控制网格线的密度
set(gca, 'XMinorGrid','on');
在方法 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);
大功告成!!
解释一下,XTick 和 XTickLabel 的区别:XTick 控制 X 轴上的那个小竖线,XTickLabel 用来控制 X 轴下面的数字显示,其他坐标轴也一样。再来看一下 a 和 b 是什么?
补充:
ylim([ymin,ymax]);%对Y轴设定显示范围