估计很多人会碰到,当绘制的曲线特别多的时候,需要用不同的颜色和线型区分开这些曲线。根据STC论文,自己整理了一个颜色和线型的例子,供大家直接使用,直接引用PlotStyle这个数据结构就可以了。
示例1
1 PlotStyle={ 2 struct(\'Color\',[1,0,0],\'LineStyle\',\'-\'),... 3 struct(\'Color\',[0,1,0],\'LineStyle\',\'-\'),... 4 struct(\'Color\',[0,0,1],\'LineStyle\',\'-\'),... 5 struct(\'Color\',[0,0,0],\'LineStyle\',\'-\'),...% struct(\'Color\',[1,1,0],\'LineStyle\',\'-\'),...%yellow 6 struct(\'Color\',[1,0,1],\'LineStyle\',\'-\'),...%pink 7 struct(\'Color\',[0,1,1],\'LineStyle\',\'-\'),... 8 struct(\'Color\',[0.5,0.5,0.5],\'LineStyle\',\'-\'),...%gray-25% 9 struct(\'Color\',[136,0,21]/255,\'LineStyle\',\'-\'),...%dark red 10 struct(\'Color\',[255,127,39]/255,\'LineStyle\',\'-\'),...%orange 11 struct(\'Color\',[0,162,232]/255,\'LineStyle\',\'-\'),...%Turquoise 12 struct(\'Color\',[163,73,164]/255,\'LineStyle\',\'-\'),...%purple %%%%%%%%%%%%%%%%%%%% 13 struct(\'Color\',[1,0,0],\'LineStyle\',\'--\'),... 14 struct(\'Color\',[0,1,0],\'LineStyle\',\'--\'),... 15 struct(\'Color\',[0,0,1],\'LineStyle\',\'--\'),... 16 struct(\'Color\',[0,0,0],\'LineStyle\',\'--\'),...% struct(\'Color\',[1,1,0],\'LineStyle\',\'--\'),...%yellow 17 struct(\'Color\',[1,0,1],\'LineStyle\',\'--\'),...%pink 18 struct(\'Color\',[0,1,1],\'LineStyle\',\'--\'),... 19 struct(\'Color\',[0.5,0.5,0.5],\'LineStyle\',\'--\'),...%gray-25% 20 struct(\'Color\',[136,0,21]/255,\'LineStyle\',\'--\'),...%dark red 21 struct(\'Color\',[255,127,39]/255,\'LineStyle\',\'--\'),...%orange 22 struct(\'Color\',[0,162,232]/255,\'LineStyle\',\'--\'),...%Turquoise 23 struct(\'Color\',[163,73,164]/255,\'LineStyle\',\'--\'),...%purple %%%%%%%%%%%%%%%%%%% 24 struct(\'Color\',[1,0,0],\'LineStyle\',\'-.\'),... 25 struct(\'Color\',[0,1,0],\'LineStyle\',\'-.\'),... 26 struct(\'Color\',[0,0,1],\'LineStyle\',\'-.\'),... 27 struct(\'Color\',[0,0,0],\'LineStyle\',\'-.\'),...% struct(\'Color\',[1,1,0],\'LineStyle\',\':\'),...%yellow 28 struct(\'Color\',[1,0,1],\'LineStyle\',\'-.\'),...%pink 29 struct(\'Color\',[0,1,1],\'LineStyle\',\'-.\'),... 30 struct(\'Color\',[0.5,0.5,0.5],\'LineStyle\',\'-.\'),...%gray-25% 31 struct(\'Color\',[136,0,21]/255,\'LineStyle\',\'-.\'),...%dark red 32 struct(\'Color\',[255,127,39]/255,\'LineStyle\',\'-.\'),...%orange 33 struct(\'Color\',[0,162,232]/255,\'LineStyle\',\'-.\'),...%Turquoise 34 struct(\'Color\',[163,73,164]/255,\'LineStyle\',\'-.\'),...%purple 35 }; 36 37 x = 0.1:.1:10; 38 len = length(PlotStyle) 39 for i = 1:len 40 y = x.*log(x)+i*2; 41 hold on; 42 plot(x,y,\'Color\',PlotStyle{1,i}.Color,\'LineStyle\',PlotStyle{1,i}.LineStyle,\'lineWidth\', 2);%call method 43 end 44 title(\'多种颜色和线性的示例\',\'FontSize\',20,\'FontWeight\',\'bold\',\'Color\',\'k\'); 45 xlabel(\'x轴\',\'FontSize\',15,\'FontWeight\',\'bold\',\'Color\',\'k\'); 46 ylabel(\'y轴\',\'FontSize\',15,\'FontWeight\',\'bold\',\'Color\',\'k\'); 47 saveas(1, \'result\', \'jpg\');
效果如下图所示:
示例2
PlotStyle={ struct(\'Color\',[123,0,150]/255,\'LineStyle\',\'-\'),... struct(\'Color\',[1,0,160]/255,\'LineStyle\',\'--\'),... struct(\'Color\',[0,137,4]/255,\'LineStyle\',\'-.\'),... struct(\'Color\',[160,101,5]/255,\'LineStyle\',\':\'),...% struct(\'Color\',[1,1,0],\'LineStyle\',\'-\'),...%yellow struct(\'Color\',[150,0,5]/255,\'LineStyle\',\'-\') }; x = 0:.1:10; len = length(PlotStyle) for i = 1:len % y = x.*log(x)+i*2; y = x.*sin(x)+i*2; hold on; plot(x,y,\'Color\',PlotStyle{1,i}.Color,\'LineStyle\',PlotStyle{1,i}.LineStyle,\'lineWidth\', 2); end title(\'多种颜色和线性的示例\',\'FontSize\',20,\'FontWeight\',\'bold\',\'Color\',\'k\'); xlabel(\'x轴\',\'FontSize\',15,\'FontWeight\',\'bold\',\'Color\',\'k\'); ylabel(\'y轴\',\'FontSize\',15,\'FontWeight\',\'bold\',\'Color\',\'k\'); saveas(1, \'result2\', \'jpg\');
效果如下图所示:
示例3
clc; close all; %%数据生成 ya = []; yb = []; yc = []; xa = []; xb = []; xc = []; for i = 0:10 value0 = i*2+rand(); valuea = i*2+rand(); xa = [xa value0]; ya = [ya 2*valuea.^(0.6)]; valueb = i*2+rand(); xb = [xb valueb]; yb = [yb 2*valuea.^(0.7)]; valuec = i*2+rand(); xc = [xc valuec]; yc = [yc 2*valuea.^(0.5)]; end xa = xa - min(xa); ya = ya - min(ya); xb = xb - min(xb); yb = yb - min(yb); xc = xc - min(xc); yc = yc - min(yc); figure(1); hold on; axis equal %强制坐标轴尺度相同,这个放在前面或者后面效果会不一样 xlim([0 22]);%x轴范围 ylim([0 14]);%y轴范围 %%绘制曲线 plot(xa,ya,\'ms:\',\'LineWidth\',4,\'MarkerSize\',15,\'Color\', [1 0 0]); x = xa(end);y = ya(end); text(x-0.5,y+0.5,[\'(x_n,y_n)\'],... \'FontSize\',20, \'Color\',[0.0 0.0 0.0], \'FontWeight\',\'bold\'); plot(xb(1:end-3),yb(1:end-3),\'ro:\',\'LineWidth\',4,\'MarkerSize\',15,\'Color\', [0 0 1]); x = xb(end-3);y = yb(end-3); text(x-0.5,y+0.5,[\'(x_m,y_m)\'],... \'FontSize\',20, \'Color\',[0.0 0.0 0.0], \'FontWeight\',\'bold\'); plot(xc(1:end-2),yc(1:end-2),\'r<:\',\'LineWidth\',4,\'MarkerSize\',15,\'Color\', [0 1 0]); x = xc(end-2);y = yc(end-2); text(x-0.5,y+0.5,[\'(x_k,y_k)\'],... \'FontSize\',20, \'Color\',[0.0 0.0 0.0], \'FontWeight\',\'bold\'); %坐标原点 x = xc(1);y = yc(1); text(x+0.5,y+0.5,[\'(x_0,y_0)\'],... \'FontSize\',20, \'Color\',[0.0 0.0 0.0], \'FontWeight\',\'bold\'); title(\'转归过程\',\'FontSize\',25,\'FontWeight\',\'bold\',\'FontName\',\'微软雅黑\'); %%坐标轴标题设置 xlabel(\'体质辨识x\',\'Color\',\'k\',\'FontSize\',20,\'FontWeight\',\'bold\',\'FontName\',\'微软雅黑\');%横轴标题 ylabel(\'疾病预报y\',\'Color\',\'k\',\'FontSize\',20,\'FontWeight\',\'bold\',\'FontName\',\'微软雅黑\');%纵轴标题 %设置legend hleg = legend(\'体检者1\',\'体检者2\',\'体检者3\',\'Location\',\'NorthWest\');%本身不能设置字体的大小,需要通过set进行设置 set(hleg,\'FontSize\', 20, \'FontAngle\',\'italic\',\'FontWeight\',\'bold\',... \'Color\',[1,1,1]);%Color为设置坐标的背景颜色 %%坐标轴刻度设置 set(gca, \'ytick\',ya,\'yticklabel\',{\' \',\' \',\' \',\' \',\' \',\' \',\'\',\'\',\'\',\'\'},\'xtick\',x,... \'xticklabel\',{\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\'}, \'color\',[1 1 1],... \'FontSize\',12,\'FontName\',\'微软雅黑\'); %xtick就是你要在哪些地方显示刻度,xticklabel就是显示什么内容 scrsz = get(0,\'ScreenSize\'); set(gcf,\'Position\',scrsz); %%保存图像 set(1, \'InvertHardCopy\', \'off\');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on filename = \'test\'; saveas(1,filename,\'jpeg\');
效果如下图所示: