我有一个要绘制的数据数组
temp=0.5*rand(500,10); [~,offset]=meshgrid(1:500,1:10); figure(101) plot(temp+offset') 线条颜色经过一个周期后,如何设置线条样式以自动更改为下一个样式?
对于此示例,我希望第8-10行具有不同的线条样式。我可以手动进行,但如果可以在某处设置默认选项,我希望Matlab为我完成。
回答:
您的第一个倾向可能是在绘制数据之前只更改轴的
'LineStyleOrder'属性 。不幸的是,高级绘图功能(例如
PLOT)会在绘图之前将轴的
'LineStyleOrder'属性重置为其默认值'-' 。一种解决方案是在
根级别 更改所有轴对象使用
的默认值 。例如:
set(0,'DefaultAxesLineStyleOrder',{'-',':'}); 将首先使用实线,然后使用虚线,然后根据需要对每个图再次重复。请注意,您还可以通过更改根目录的默认值,将自定义
'ColorOrder'属性与高级绘图功能一起使用。以下示例将对其进行更改,因此
PLOT仅在红色,绿色和蓝色之间循环:
set(0,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 0 0 1]); 不用担心线条样式不同,解决该问题的另一种方法是将默认颜色顺序设置为仅包含7种以上的颜色。
在根目录上设置默认属性值后,它们将保持这种状态,直到关闭MATLAB。重新打开后,默认属性值将重新设置为其出厂定义的值。像
CLEAR这样的命令不会将默认属性设置回其出厂定义的值。相反,您应该将默认属性值设置为'remove'以撤消用户定义的值,如下所示:
set(0,'DefaultAxesLineStyleOrder','remove'); %# Sets the default back to '-' 作为更改
所有轴对象使用的默认属性的另一种选择,如果将单个轴的
NextPlot属性更改为
除 'replace'
以外 'replace'任何内容,则可以将
'LineStyleOrder'或
'ColorOrder'属性更改为所需的任何值,
PLOT将不要将它们重置为默认值。例如,这也应该做您想要的:
set(gca,'NextPlot','add','LineStyleOrder',{'-',':'}); plot(temp+offset');
更多&回答...