2012-03-07 7 views
0
clear all 
FieldName = {'loc1','loc2','loc3','loc4'}; 
data = rand(8760,4); 

dnew = mat2cell(data,eomday(2011, (1:12))*24,size(data,2)); 
k = cellfun(@(x)num2cell(nonzeros(tril(corrcoef(x),-1))),dnew','un',0); 
out = [FieldName(nchoosek(1:numel(FieldName),2)) [k{:}]]; 

Этот пример демонстрирует среднемесячную корреляцию между каждым местоположением пары с 4 сайтов и выражается в «выводе». У меня возникли проблемы с составлением этой информации. Я хотел бы нарисовать линейный график для каждой пары мест, но там, где у разных линий есть разные маркеры. Кроме того, я хотел бы вставить легенду, показывающую пару местоположений, как это указано в out {1,1} и out {1,2}.построение графика из массива ячеек

Надеюсь, что я ясно выражал свои намерения.

ответ

2

Если вы заинтересованы в чем-то вроде этого,

Example

Вы можете использовать следующий код:

% Plot data 
data = out(:,3:end); 
p = plot(cell2mat(data)'); 

% Generate a cell containing the display names 
display_names = cellfun(@(a,b) sprintf('%s - %s', a, b), ... 
    out(:,1), out(:,2), 'UniformOutput', false); 
legend(display_names); 

% Set markers 
markers = {'+', '>', '<', '^', 'v', '*', 'hexagram'}; 
for i=1:(min(length(markers), size(out,1))) 
    set(p(i),'Marker',markers{i}); 
end 
+0

точно. Спасибо. – Emma