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 | 老版本如何更加优雅的调整子图空隙,去除白边?