您当前的位置: 首页 >  matlab

slandarer

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MATLAB | 老版本也能用,默认设置让简单的代码画出炫酷的图像

slandarer 发布时间:2022-09-04 00:26:32 ,浏览量:0

示例

之前出过一期炫酷绘图背景的代码,但是有几个问题:

  • 老版本无法使用,需要比较新的才能支撑我的花里胡哨的写法,大体描述应该算内含匿名函数及回调函数的不定参数列表的结构体函数。。。
  • 仅仅修饰背景,直线、散点等图形对象的属性还需要自己修饰。
  • 每次都要运行一遍工具函数太麻烦。

那么这篇文章一次性全解决!

正文 思路(可略过)

我们随便写一个画折线的代码,运行效果如下:

t=0.01:0.01:3*pi;
plot(t,cos(t)./(1+t))
hold on
plot(t,sin(t)./(1+t))
plot(t,cos(t+pi/2)./(1+t+pi/2))
plot(t,cos(t+pi)./(1+t+pi))
legend

但如果我们随便在一个m文件或者命令行窗口运行一下这一句:

set(groot,'defaultLineLineWidth',2)

那么之后只要用plot或者line函数画图且不设置线宽的话,那么画出来的线条都是加粗,粗细为2的,之前折线图绘制代码一行不动直接运行效果:

这就是直接对根图形对象(MATLAB最底层的图形对象)设置默认值,我们来看’defaultLineLineWidth’实际上就是

  • default + Line + LineWidth

就是设置线条对象(Line),的宽度(LineWidth)的默认值(default),非常简单。同理我如果想要每次画图背景都是黑色的只需要运行一句:

set(groot,'defaultAxesColor',[0,0,0])

以后画图背景都是黑的。

工具函数介绍

于是我写了一个可以实现连基本图形对象带背景一起修饰的函数selfGrootDefault(theme)工具函数过长将放在最后,以下先说明一下用法:

比如我在一个m文件或者命令行窗口运行一下:

selfGrootDefault(4)

或者:

selfGrootDefault('dark2')

上面这两行都是指同一种修饰方法,(为了方便每种风格都设置了一个编号,可以直接使用编号来调用),之后再随便写点函数画点图,效果就完全不是很直的原版绘图:

surf(peaks)
set(gca,'Projection','perspective')
view(-37,42) 

y=[2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)

想要变回默认设置只需要运行

selfGrootDefault(0)

此时完全一样的代码再次运行画出来就是原版绘图:

风格展示

未修饰基本绘制效果:

subplot(2,2,1)
t=0.01:0.01:3*pi;
plot(t,cos(t)./(1+t))
hold on
plot(t,sin(t)./(1+t))
plot(t,cos(t+pi/2)./(1+t+pi/2))
plot(t,cos(t+pi)./(1+t+pi))
legend

subplot(2,2,2)
axis([0,50,0,50,-10,10])
xticks(0:10:50)
yticks(0:10:50)
zticks(-10:5:10)
hold on
surf(peaks)
set(gca,'Projection','perspective')
view(-37,42) 

subplot(2,2,3)
t=linspace(pi/100,4*pi,500);
y1=cos(t).^2;
y2=sin(t).^2./t;
hold on
area(y1)
area(y2)

subplot(2,2,4)
y=[2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)

下面的数值就代表了代码

selfGrootDefault(n)

中的n是几

1 / ‘gbase’

2 / ‘gbase2’

3 / ‘dark’

4 / ‘dark2’

5 / ‘ggray2’

6 / ‘economist’

7 / ‘wsj’

完整代码
function selfGrootDefault(theme)
if nargin            
关注
打赏
1664692598
查看更多评论
0.0486s