如何对值进行分类和绘图

时间:2019-03-25 17:03:29

标签: matlab plot bar-chart

我有一个包含两列的数据集,第一列是持续时间(时间长度(例如5分钟),第二列是点火速率)是否有可能以这样的方式将其绘制为:点火速率根据相应的持续时间(例如5、10、15分钟),然后绘制条形图,在y轴上具有点火速率,在x上具有时间?

1 个答案:

答案 0 :(得分:1)

我敢肯定,没有for循环就可以实现。下面的解决方案使用discretize函数来完成分组。其他方法也是可能的。

% MATLAB R2017a
% Sample data
D = 20*rand(25,1);
FR = 550*rand(25,1);
D_bins = (0:5:20)';

ind = discretize(D,D_bins);                % groups data
FR_mean = zeros(length(D_bins),1);
for k = 1:length(D_bins)
    FR_mean(k) = mean(FR(ind==k));
end

bar(D_bins,FR_mean)                        % bar plot


% Cosmetics
xlabel('Duration (min)')
ylabel('Mean Firing Rate (unit)')

我很肯定可以使用arrayfun或其他一些漂亮的函数来为每个组获取方法,这是一种更有效的方法,但是会一直等到OP提供更多细节为止。