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

Posted slandarer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB | 老版本也能用,默认设置让简单的代码画出炫酷的图像相关的知识,希望对你有一定的参考价值。

示例

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

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

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


正文

思路(可略过)

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

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<1
    theme=0;
end

try
set(groot,'defaultLineLineWidth',2)
set(groot,'defaultAxesFontName','Arial')
set(groot,'defaultAxesColorOrder',[102,194,165; ...
    252,140,98; ...
    142,160,204; ...
    231,138,195; ...
    166,217,83; ...
    255,217,48; ...
    229,196,148; ...
    179,179,179]./255)
% set(groot,'defaultAxesProjection','perspective')
set(groot,'defaultSurfaceEdgeColor',[1,1,1].*.7);
set(groot,'defaultSurfaceEdgeAlpha',.5);


CM=[127	0	255	126	0	254	125	1	254	125	2	254	124	3	254	123	5	254	122	6	254	121	7	254	121	8	254	120	10	254	119	11	254	118	12	254	117	13	254	117	14	254	116	16	254	115	17	254	114	18	254	113	19	254	113	20	254	112	22	254	111	24	254	110	25	254	109	26	254	108	28	254	108	29	254	107	30	254	106	31	254	105	32	254	104	34	254	104	35	254	103	36	254	102	37	254	101	38	254	100	40	254	100	41	254	99	42	254	98	43	253	97	45	253	96	46	253	96	47	253	95	48	253	94	50	253	93	51	253	92	53	253	92	54	253	91	55	253	90	56	253	89	58	253	88	59	253	87	60	253	87	61	253	86	62	252	85	64	252	84	65	252	83	66	252	83	67	252	82	69	252	81	70	252	80	71	252	79	72	252	79	73	252	78	75	251	77	76	251	76	77	251	75	78	251	75	79	251	74	81	251	73	82	251	72	83	251	71	84	251	70	86	250	70	87	250	69	88	250	68	89	250	67	90	250	66	92	250	66	93	250	65	94	250	64	95	250
63	96	250	62	97	249	62	98	249	61	99	249	60	100	249	59	102	249	58	103	249	58	104	249	57	105	249	56	106	248	55	108	248	54	109	248	53	110	248	53	111	248	52	112	248	51	114	248	50	115	247	49	116	247	49	116	247	48	118	247	47	119	247	46	120	246	45	121	246	45	122	246	44	124	246	43	125	246	42	126	246	41	127	246	41	127	246	40	129	245	39	130	245	38	131	245	37	132	245	36	134	244	36	134	244	35	135	244	34	136	244	33	137	244	32	139	243	32	140	243	31	141	243	30	142	243	29	143	243	28	144	243	28	145	243	27	146	243	26	147	242	25	148	242	24	149	242	24	150	242	23	151	242	22	152	241	21	153	241	20	154	241	20	155	241	19	156	241	18	157	240	17	158	240	16	159	239	15	160	239	15	161	239	14	162	239	13	163	239	12	164	238	11	165	238	11	166	238	10	167	238	9	168	238	8	169	237	7	170	237	7	170	237	6	172	237	5	173	237	4	174	236	3	175	236	3	175	236	2	176	236	1	177	236	0	178	235
0	179	235	0	180	234	0	181	234	1	182	234	2	183	234	3	184	234	4	185	233	4	185	233	5	186	233	6	187	232	7	188	232	8	189	232	8	189	232	9	190	232	10	191	231	11	192	231	12	193	230	12	193	230	13	194	230	14	195	230	15	196	230	16	197	229	17	198	229	17	198	229	18	199	228	19	200	228	20	201	228	21	202	228	21	202	228	22	203	227	23	204	227	24	205	226	25	206	226	25	206	226	26	207	226	27	208	226	28	209	225	29	209	225	29	209	225	30	210	224	31	211	224	32	212	223	33	213	223	33	213	223	34	214	223	35	214	223	36	215	222	37	216	222	38	217	221	38	217	221	39	218	221	40	219	220	41	219	220	42	220	220	42	220	220	43	221	220	44	222	219	45	222	219	46	223	218	46	223	218	47	224	218	48	225	217	49	225	217	50	226	216	50	226	216	51	227	216	52	228	215	53	228	215	54	229	215	55	229	215	55	229	215	56	230	214	57	231	214	58	232	213	59	232	213	59	232	213	60	233	212	61	233	212	62	234	211
63	235	211	63	235	211	64	236	210	65	236	210	66	237	209	67	237	209	67	237	209	68	238	209	69	238	209	70	239	208	71	239	208	72	240	207	72	240	207	73	240	207	74	241	206	75	241	206	76	242	205	76	242	205	77	242	205	78	243	204	79	243	204	80	244	203	80	244	203	81	244	203	82	245	202	83	245	202	84	246	201	84	246	201	85	246	201	86	246	200	87	246	200	88	247	199	88	247	199	89	247	199	90	248	198	91	248	198	92	249	197	93	249	197	93	249	197	94	249	196	95	249	196	96	250	195	97	250	195	97	250	195	98	250	194	99	250	194	100	251	193	101	251	193	101	251	193	102	251	192	103	251	192	104	252	191	105	252	191	105	252	191	106	252	190	107	252	190	108	253	189	109	253	189	110	253	188	110	253	188	111	253	188	112	253	187	113	253	187	114	254	186	114	254	186	115	254	186	116	254	185	117	254	185	118	254	184	118	254	184	119	254	184	120	254	183	121	254	183	122	254	182	122	254	182	123	254	181	124	254	180	125	254	180	126	254	179
127	254	179	127	254	179	128	254	178	129	254	178	130	254	177	131	254	177	131	254	177	132	254	176	133	254	176	134	254	175	135	254	175	135	254	175	136	254	174	137	254	174	138	254	173	139	254	172	139	254	172	140	253	171	141	253	171	142	253	170	143	253	170	143	253	170	144	253	169	145	253	169	146	252	168	147	252	168	148	252	167	148	252	167	149	252	167	150	251	166	151	251	165	152	251	164	152	251	164	153	251	164	154	250	163	155	250	163	156	250	162	156	250	162	157	250	162	158	249	161	159	249	161	160	249	160	160	249	160	161	249	159	162	248	158	163	248	158	164	247	157	165	247	157	165	247	157	166	246	156	167以上是关于MATLAB | 老版本也能用,默认设置让简单的代码画出炫酷的图像的主要内容,如果未能解决你的问题,请参考以下文章

傻乎乎也能用好matlab工具---如何安装Mosek工具箱

MATLAB | 老版本如何更加优雅的调整子图空隙,去除白边?

MATLAB | 老版本如何更加优雅的调整子图空隙,去除白边?

halcon开发的软件 如何让客户不安装halcin也能用

安装VS2010后,如何设置老版本的项目文件不是默认用VS2010打开

如何使得matlab的计算结果默认显示为小数