Я пытаюсь построить месячную статистику, которая охватывает более 2 лет, где 1 год содержит только один месяц данных, а другой - 11 месяцев. Там, где у меня возникают проблемы, на этикетке легенды, когда я заполняю ярлык, он берет один месяц данных с первого года и помещает метки следующего года, как будто он заполняется в этом месяце. Вот что я имею в виду:Создание легенды наборов данных переменной длины + игнорирование пустых ячеек
legendms=['PIC2 -- HHN Jan 13', 'PIC2 -- HHN Feb 13', PIC2 -- HHN March 13', 'PIC2 -- HHN Apr 13', 'PIC2 -- HHN May 13', 'PIC2 -- HHN June 13', 'PIC2 -- HHN July 13', 'PIC2 -- HHN Aug 13', 'PIC2 -- HHN Sept 13', 'PIC2 -- HHN Oct 13', 'PIC2 -- HHN Nov 13', 'PIC2 -- HHN Dec 12']
Где 13 это на 2 значное представление для 2013 года, и 12 за 2012 г. Он делает это, хотя я на велосипеде в течение многих лет в порядке. Я считаю, что это потому, что легенды на 2012 год - это, по сути, пустые ячейки, за исключением Dec, и поэтому он просто заполняет пространство. Он также не соответствует соответствующим стилям линии. Он помещает 13 января другой стиль линии «-», чем остальные, когда 12 декабря должен быть другим стилем линии. Кто-нибудь знает об этом, или как игнорировать пустые ячейки, сохраняя при этом полную легенду?
Вот код, который у меня есть до сих пор, возможно, я просто делаю простую ошибку? Любая помощь будет принята с благодарностью!
close all;
for ms=1:length(stats)
legendms=[];
for i = 1:length(files)
figure
for y = 1:length(files(i,1).year)
if (files(i,1).comp(1) == 'H')
xvals = files(i,1).allData{7}(1:114);
elseif (files(i,1).comp(1) == 'B')
xvals = files(i,1).allData{7}(1:95);
end
for m = 1:length(files(i,1).year(y).month)
%Set up generic month string
if ~isempty(files(i,1).year(y).month(m).(x{ms}))
monthString = {'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'};
%Set up month string particular to this dataset
mString= monthString(1:length(files(i,1).year(y).month));
yString=cellstr(num2str(year));
%Set up axis variable particular to this dataset
axisVar = [1 length(mString) -70 10];
LineColors={rgb('red') rgb('blue') rgb('green') rgb('indigo') rgb('cyan')
rgb('orange') rgb('HotPink') rgb('DarkGray') rgb('purple') rgb('BurlyWood')
rgb('yellow') rgb('Salmon')};
%Loop through stats to plot
semilogx(xvals,files(i,1).year(y).month(m).(x{ms}),LineStyles{y}, 'Color', LineColors{m},
'LineWidth',lWidth)
hold on
%Set axis interval
axis([0.1, 172, -190, -80]);
%Set the axis label max, min, and interval for the Yaxis
set(gca,'YTick', [-190:10:-80])
%Label x and y axis and create cell for legend for each sta, loc, chan per
%file to use below. Make title for each plot
xlabel('Period (s)','FontSize',labelSize);
ylabel('Power (dB)','FontSize',labelSize);
legendms{m} = [legendms ' ' files(i,1).sta ' ' files(i,1).loc ' ' files(i,1).comp ' '
monthString{m} ' ' yString{y}(3:4)];
title([x{ms} ' ' 'Monthly Comparisons', ' ' num2str(files(i,1).allData{2}(1)) '/'
num2str(files(i,1).allData{3}(1)) '/' num2str(files(i,1).allData{1}(1)) '-'
num2str(files(i,1).allData{2}(end)) '/' num2str(files(i,1).allData{3}(end)) '/'
num2str(files(i,1).allData{1}(end))],'FontSize',titleSize);
end
end
end
%Plot NLNM and NHNM models and label legend for each figure
semilogx(nlnmx,nlnmy,'k-','LineWidth',lWidth)
semilogx(nhnmx,nhnmy,'k-','LineWidth',lWidth)
hold off
legend([legendms, 'NLNM', 'NHNM'], 'Location', 'EastOutside')
end
end
Повторит Я хотел бы легенду игнорировать пустые ячейки для любого из лет и построить ярлык легенды в порядке с лет, используя соответствующие цвета и станцию этикетку. 2012 год должен быть сплошной линией, а 2013 - пунктирной линией, причем любые цвета являются репрезентативными для месяца, который они описывают (lineColors).
Вы повторяете файлы 'files' и' files (i).год в порядке - правильно ли они отсортированы? Имейте в виду, если вы используете 'dir' вы _must_, предположите, что список файлов несортирован, так как вы получаете любой заказ, который система чувствует, как предоставление вам. – Notlikethat
Да, они правильно отсортированы, поскольку они разделены внутри моей структуры, так что файлы (i, 1) .year (1) - 2012, а файлы (i, 1) .year (2) - 2013 год. то в 2013 году, но я думаю, так как пустые ячейки существуют в 2012 году, он заполняет в 2012 году стиль линии и цвет 2013 года. Как вы думаете, может быть, это из-за цикла через m, что есть 12 месяцев в каждом? Даже если все двенадцать ячеек не заполнены? – user1332577
Вы знаете, как обойти это поведение? – user1332577