【问题标题】:Matlab - Dual category X-axis (Day and Hour)Matlab - 双类别 X 轴(日和小时)
【发布时间】:2014-09-24 14:38:22
【问题描述】:

对于一个情节,就像所附的一样,有没有办法引入双类别轴?还可以看到一个(画得很差的)示例。

理想情况下,报告应该是自动生成的,因此设置静态日期名称并不理想..

编辑:我还应该提到,每天重新开始工作时间会很棒,0-24,0-24,0-24 等

【问题讨论】:

    标签: matlab matlab-figure axis-labels


    【解决方案1】:

    不确定日期,但我有一个关于小时数的建议。想象一下:

    hours = 0:70;
    data=rand(size(hours));
    plot(hours,data,'*')
    xlabel('Hours of day')
    

    这给出了以下情节:

    现在您需要编辑 x 轴使用的标签。这是一种方法(不一定是最优雅的,因为您正在处理元胞数组并且必须在字符串和数字数据类型之间来回转换,但它似乎工作,至少在 Octave 中):

    temp = get(gca,'xticklabel');
    for k=1:length(temp)
        temp{k} = num2str(mod(str2num(temp{k}),24));
    end
    set(gca,'xticklabel',temp)
    

    这给出了以下图表:

    祝你好运,添加下面的日子! (或许可以巧妙地使用text 命令)

    【讨论】:

    • 不错的答案!我添加了我的,因为你的刚刚发布:) +1
    【解决方案2】:

    这是一种使用文本注释的非常自定义的方式。您可能需要添加一些小的更改以适应您的数据。

    clc
    clear
    
    x = 1:80;
    
    HourValues = repmat([0 10 20],1,3);
    DaysString = {'Mon' 'Tue' 'Wed'};
    
    NumDays = numel(DaysString);
    
    plot(x,rand(1,80))
    
    set(gca,'XTickLabel',HourValues) % Set xtick labels
    
    xlimit = get(gca,'XLim'); % Get x and y- limits
    ylimit = get(gca,'YLim');
    
    
    
    % May need some adaptation to fit your data
    for k = 1:NumDays       
        text((NumDays*k-2)*10,ylimit(1)-.06,DaysString{k},'FontSize',14,'HorizontalAlignment','Center')
    end
    
    text(xlimit(2)/2,ylimit(1)-0.1,'Hour of day','FontSize',16,'HorizontalAlignment','Center')
    

    给这样的东西:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多