【问题标题】:Labeling axis. Convertion from Excel. Convert data into String标签轴。从 Excel 转换。将数据转换为字符串
【发布时间】:2014-04-26 02:04:22
【问题描述】:

您将如何绘制 A 与 B 图表,其中 A 和 B 是 Excel 中的列,例如

A   
Red
Green
Blue

B
1:00 AM
2:00 AM
3:00 AM

对于我使用的 3*3 图表

set(gca,'XTick',1:3);
set(gca,'XTickLabel',{'Red','Green','Blue'});
set(gca,'YTick',1:3);
set(gca,'YTickLabel',{'1:00 AM','2:00 AM','3:00 AM'});

但是手动输入 1000*1000 会很麻烦。

所以我的问题是: 如何将 A 列中的值 Red Green Blue 转换为 {'Red','Green','Blue'}? (为了在set(gca,'XTickLabel'...)

中使用它们

我尝试过使用

 color = xlsread(fileName, 'A1:A3');

但它没有将数据转换成正确的格式。

感谢任何帮助。

【问题讨论】:

    标签: excel matlab graph axis-labels


    【解决方案1】:

    xlsreadsecond 输出参数包含文本数据。第一个只包含数字:

    >> [nums,colors,raw] = xlsread('colorData.xlsx','A1:A3');
    >> colors
    colors = 
        'Red'
        'Green'
        'Blue'
    

    更新:xlsread 读取的时间采用 Excel 的序列日期格式(数字表示)。可以使用datestr将它们转换为带有时间的字符串。

    >> nums
    nums =
        0.0417
        0.0833
        0.1250
    >> datestr(nums)
    ans =
     1:00 AM
     2:00 AM
     3:00 AM
    

    这些实际上是日期,使用Jan. 1 1900 as time zero。所以,但只给出一个时间,假设这一天是一个数字。但是,MATLAB 使用 Jan-1-0000,因此如果您有日期和时间,请使用 datestr(t + datenum('30-Dec-1899')) 转换它们,其中 t 是带有序列日期编号的数值。

    【讨论】:

    • 为了让它工作,我需要将所有内容重新格式化为“文本”,对吗?
    • xlsread 的第三个输出是“原始”数据。它是一个单元格数组,可以同时包含“double”、“chars”等。在您的情况下,它们似乎都是字符(因为“1:00 AM”包含非数字值),所以您应该能够在调用 ticklabel 时直接使用此元胞数组。
    • 它确实会提取它们,但不是以“1:00 AM”格式。它只是给我 [1:00 AM] [2:00 AM] 等等。可以轻松地将其转换为文本吗?
    • @user3402959 你能在某处发布一个简单的示例 xls(x) 文件吗?
    • @user3402959 使用datestr(nums) 转换为日期字符串,我相信。
    猜你喜欢
    • 2021-03-03
    • 2021-11-07
    • 2011-11-28
    • 2013-08-14
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多