カテゴリはx軸とセルアレイデータのMATLABプロット

J・ポール

私は、ネストされたセル配列とセル配列を持っています: ここでは、画像の説明を入力します。

私は、行によってネストされた各セル配列をプロットしたいです。しかし、すべてのネストされたセル配列は、8x1のです。私は、NaNまたはゼロとしてempy値を入力する必要があるが、それでも継続的にデータをプロットすることができます。

列7-9のための例:

Column7   Column8   Column9
1          1           1                       
2          2           2                        
3        NaN          NaN
4        NaN          NaN
5        NaN          NaN
6        NaN          NaN

I行によってプロットする、行1、行2、行3が(2,2,2)である(1,1,1)である(3は、NaN、NaNで)など; カテゴリ7の値を持つことになりますので、1-6垂直。カテゴリー8は、垂直NaNに値1を持っていますが、値のみ1と2をプロットします。

私は、行1つの値は、ラインを介して接続したいです:

例:

figure
hold on
cellfun(@(C1) plot(cell2mat(C1,:), 'o-'), C);
% setup axes
xlim([0, 15]);
ax = gca;
ax.XTick = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
ax.XTickLabel = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'};

プロットは、次のようになります。 ここでは、画像の説明を入力します。

イヴァナ:

これを行う最も簡単な方法は、他の場所での2Dデータを含むマトリックス(存在)、およびNaNを構築することです。MATLABでほとんどのプロットコマンドは、NaNを無視します。

あなたのセル配列を行列に変換するには、あなただけのNaNを含む行列、およびデータ現在の列ごとの欄にご記入を作成することができます。例えば;

% Create dummy data
C = {[1;2;3;4], [7;7;8], [5;4]};
% Find the maximum number of rows possible across all cells
Nrows = max(cellfun(@length, C));
% Create matrix full of NaNs
M = nan(Nrows, length(C));
% Loop cells
for i = 1 : length(C)
    % Pull the contents of this cell
    Content = C{i};    
    % Fill this column with as many rows as we found
    M(1 : length(Content), i) = Content;
end

得られたマトリックスは、M各セルの値が含まれているC列ごとに1つ、。あなたは、単にそれらをプロットすることができます

plot(M)

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=377170&siteId=1