2013-09-26 2 views
1

Например, допустим, что у меня есть следующая матрица (< 9x6 double>) с колгонами (< 1x6 cell>).Построение подзаголовков в фигуре автоматически для каждого столбца матрицы

Matrix = 

    226.7431 14.7437 14.9417 14.1000 14.5000  66.0590 
    226.7500 14.6582 14.8250  NaN 14.2000  66.7740 
    226.7569 14.3590 14.6067  NaN 13.9000  68.4897 
    226.7639 14.2702 14.5717 13.4000 13.8000  68.2487 
    226.7708 14.2555 14.6000  NaN 14.0000  NaN   
    226.7778 14.1605 14.5967  NaN 13.9000  NaN  
    226.7847 14.0320 14.4567 12.9000 13.6000  68.8272 
    226.7917 13.8422 14.2733  NaN 13.4000  69.6392 
    226.7986 13.6585 14.1169  NaN 13.1000  69.8048 

Я хочу, чтобы построить первый столбец матрицы на оси х, а остальные по оси у в MatLab фигуры с подзаговорами (скажем, 3 в одном рисунке). Вручную я могу сделать что-то вроде этой фигуры и так далее.

figure 
subplot(3,1,1) 
plot(Matrix(:,1),Matrix(:,2),'ro'); grid on; box on; xlabel('A');ylabel('B') 
subplot(3,1,2) 
plot(Matrix(:,1),Matrix(:,3),'bo'); grid on; box on; xlabel('A');ylabel('C') 
subplot(3,1,3) 
plot(Matrix(:,1),Matrix(:,4),'go'); grid on; box on; xlabel('A');ylabel('D') 
and so on..... 
...... 
...... 

Теперь здесь начинается сложная часть, в которой мне нужна помощь экспертов, как вы, ребята. Я не хочу делать ручную печать для моей матрицы, поскольку она состоит из 200 столбцов. Так что я хочу сделать автоматическое построение матрицы, так что она построит каждый столбец матрицы в подзаголовках. Но 200 subplot не могут прийти на одну цифру, поэтому автоматически запускается новая цифра после предела подзаголовков (скажем, 3). Кроме того, мне также необходимо определить «xlabel, ylabel, legend» автоматически с заголовком «colheaders». Является ли это возможным?

+0

Где Вы застряли? –

+0

@ F.Dernoncourt: Я могу сделать ручной сюжет, но я хочу использовать какой-то «цикл» для автоматической печати в 5-10 строках. Если я делаю ручной график, это занимает много времени и 200 строк, по крайней мере, для 200 столбцов. – Umar

ответ

1

Кажется, это простая задача для цикла.

Предполагаю, что вы знаете, сколько подзаговоров вы хотите в каждой фигуре (допустим, 3).

A = yourdatamatrix; 
header = [{'A'}, {'B'}, {'C'}, {'D'}, {'E'}, {'F'}]; 
n = 6 %number of columns 

i_figure = 1; 


for ii=1:3:n-3 
    figure(ii) 
    subplot(3,1,1) 
    plot(A(:,1),A(:,ii+1),'ro'); grid on; box on; xlabel(header(1));ylabel(header(ii+1)) 
    subplot(3,1,2) 
    plot(A(:,1),A(:,ii+2),'bo'); grid on; box on; xlabel(header(1));ylabel(header(ii+2)) 
    subplot(3,1,3) 
    plot(A(:,1),A(:,ii+3),'go'); grid on; box on; xlabel(header(1));ylabel(header(ii+3)) 
end 

Я также предполагаю, что вы не заботитесь о своем номере цифры, иначе просто выполните другой счетчик. быть также известно, что количество ваших колонок + 1 делится на 3.

3
x = rand(10, 200); 
myYLabel = char(64+randi(26, 200, 1)); 

nrows = 3; 
ncols = 2; 
for ii = 1:size(x, 2) 
    if nrows*ncols-mod(-ii, nrows*ncols) == 1 
     figure; 
    end 
    subplot(nrows, ncols, nrows*ncols-mod(-ii, nrows*ncols)); 
    plot(x(:, ii)); 
    ylabel(myYLabel(ii, :)); 
end 
Смежные вопросы