mor*_*r22 9 matlab plot coding-style linestyle
我有一系列我想绘制的数据
temp=0.5*rand(500,10);
[~,offset]=meshgrid(1:500,1:10);
figure(101)
plot(temp+offset')
Run Code Online (Sandbox Code Playgroud)
如果线条颜色经过一个循环后,如何将线条样式设置为自动更改为下一个样式?
对于这个例子,我希望第8-10行具有不同的线条样式.我可以手动完成,但是如果我可以在某处设置默认选项,我想让Matlab为我做.
gno*_*ice 15
您的第一个倾向可能是在绘制数据之前更改轴的'LineStyleOrder'属性.不幸的是,像PLOT这样的高级绘图功能会在绘图之前将轴的'LineStyleOrder'属性重置为默认值'-'.一种解决方案是更改根级别的所有轴对象使用的默认值.例如:
set(0,'DefaultAxesLineStyleOrder',{'-',':'});
Run Code Online (Sandbox Code Playgroud)
首先使用实线,然后是虚线,然后在必要时再次重复每个绘图.请注意,您也可以通过更改根目录的默认值来使用具有高级绘图功能的自定义'ColorOrder'属性.以下示例将更改它,因此PLOT仅在红色,绿色和蓝色之间循环:
set(0,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 0 0 1]);
Run Code Online (Sandbox Code Playgroud)
而不是担心不同的线条样式,问题的另一个解决方案是将默认颜色顺序设置为不仅仅有7种颜色.
一旦设置了root上的默认属性值,它们就会保持这种状态,直到MATLAB关闭.重新打开时,默认属性值将设置回其出厂定义的值.像CLEAR这样的命令不会将默认属性设置回工厂定义的值.相反,您应该将默认属性值设置'remove'为撤消用户定义的值,如下所示:
set(0,'DefaultAxesLineStyleOrder','remove'); %# Sets the default back to '-'
Run Code Online (Sandbox Code Playgroud)
作为更改所有轴对象使用的默认属性的另一种替代方法,如果您将单个轴的NextPlot属性更改为任何其他 轴,'replace'则可以将'LineStyleOrder'或'ColorOrder'属性更改为您想要的任何值,PLOT不会将它们重置为默认值.例如,这应该做你想要的:
set(gca,'NextPlot','add','LineStyleOrder',{'-',':'});
plot(temp+offset');
Run Code Online (Sandbox Code Playgroud)