построить гистограмму данных, сгруппированных по категориям в Matlab

В Matlab можно ли построить гистограмму данных, сгруппированных по категориям?

Например, скажем, я импортировал файл Excel, содержащий следующие столбцы данных:

Year    Month    Species    Count
2005      2       spider      5
2005      4      mosquito     8
2006      1       midge       4
2008      4       spider      3

На фигуре должно быть время по оси абсцисс (месяцы и годы) и счет по оси ординат. Сгруппированная столбчатая диаграмма (разные цвета для разных видов) должна быть построена в соответствующие моменты времени (обратите внимание, что при Count = 0 отсутствуют временные точки).


person user2861089    schedule 07.05.2014    source источник
comment
Возможно (mathworks.com.au/help/matlab/ref/ bar.html), но нам понадобится дополнительная информация, чтобы дать какой-либо конкретный совет.   -  person David    schedule 07.05.2014
comment
Спасибо @David - какая еще информация? Существует ~ 5 различных видов, временной диапазон - между 2004 и 2012 годами. Спасибо.   -  person user2861089    schedule 07.05.2014
comment
Небольшой пример того, как сохраняются ваши данные, может помочь, будь то матрица, массив ячеек и т. Д.   -  person David    schedule 07.05.2014
comment
ОК @ Дэвид, прости! После импорта (очень большого) файла Excel в Matlab у меня теперь есть четыре вектора-столбца с названиями Год, Месяц, Виды и Количество.   -  person user2861089    schedule 07.05.2014


Ответы (1)


Вот пример с некоторыми случайно сгенерированными данными. Вам нужно будет проверить матрицу D и убедиться, что она структурирована так же, как ваши данные.

clear,clc,close
Y=[2013:1:2014];
for i=1:length(Y)
    for j=1:12
        for k=1:3
            D(i,j,k)=randi(5)-1;
        end
    end
end

for i=1:3
    t=squeeze(D(:,:,i)).';
    M(:,i)=t(:).';
end
bar(M)

Я предполагаю, что вы можете создать D таким же, как и я. Вам нужно будет преобразовать строки в Species в числа, например:

Species={'spider';'midge';'mosquito';'spider'}
S=zeros(size(Species))
S(strcmp(Species,'spider'))=1
S(strcmp(Species,'midge'))=2
S(strcmp(Species,'mosquito'))=3

затем D=[Year Month S Count].


Надеюсь, идея хотя бы вам поможет.

person David    schedule 07.05.2014