【问题标题】:Matlab Default Color Orders and TypesMatlab 默认颜色顺序和类型
【发布时间】:2016-01-14 18:45:59
【问题描述】:

我正在寻找一种方法,最好是 GUI,以全局更改默认线条颜色、它们的顺序和类型。

我想指定第一行是这个颜色、这个类型和这个宽度;第二行是那个颜色、那个类型和那个宽度;等等。

也许行名称是行号(第一行、第二行等)、第二列中指定的颜色、第三列中的类型和第四列中的宽度。像这样。

什么是解决这个问题的好方法?

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    这不完全是您正在寻找的自定义,但您可以使用分别为DefaultAxesColorOrderDefaultAxesLineStyleOrder

    myColorOrder =  [    
        0         0.4470    0.7410   % rgb triplet
        0.8500    0.3250    0.0980
        0.9290    0.6940    0.1250
        0.4940    0.1840    0.5560
        0.4660    0.6740    0.1880
        0.3010    0.7450    0.9330
        0.6350    0.0780    0.1840]
    
    set(groot,'DefaultAxesColorOrder',myColorOrder,...
          'DefaultAxesLineStyleOrder','-|--|:|-.')
    
    Z = peaks;
    x = 1:length(Z);
    y = Z(4:7,:);
    plot(x,y)
    

    3 列矩阵myColorOrder 中的行包含描述颜色的 RGB 三元组,并且该矩阵的行顺序对应于设置DefaultAxesColorOrder 属性时的行颜色顺序。默认线型(设置为DefaultAxesLineStyleOrder 属性)是包含由| 分隔的线型的单个字符串。

    请注意,当设置多种颜色和线型时,绘图将循环如下:

    • 对于第一行样式:循环显示所有颜色
    • 更改为下一个线条样式:循环显示所有颜色
    • ...

    详情见


    如果您真的想自定义,您可能需要编写一个绘图包装器以“手动方式”自定义绘图线规格,但包装器巧妙地执行。参见例如the code for Arrow3 by Tom Davis:

    如果 LineStyle 是,则使用当前 LineStyleOrder 属性 用“*”指定。 MATLAB 循环遍历定义的线型 LineStyleOrder 属性仅在使用由 颜色顺序属性。但是,如果全局变量 LineWidthOrder 已定义,并且 LineWidth 用 '/' 指定,那么每一行将 使用顺序颜色、线型和线宽绘制。

    您可能可以利用 Tom Davis 的方法并将其应用于 Matlab 线图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2017-05-12
      相关资源
      最近更新 更多