Как построить гистограммы неравной ширины с помощью Matlab?

Я хотел бы построить гистограмму с неравными ячейками (интервалами)..Matlab строит только гистограммы с равными ячейками, как будто это диаграмма..!!!

пожалуйста, помогите мне...спасибо большое!!

3 ответов


вот пример:

x = randn(100,1)*3;           %# some random data
e = [-10 -5 -3 -1 1 2 3 20];  %# edges of intervals:  e(i) <= x < end(i+1)
c = histc(x,e);               %# get count in each interval
bar(e, c, 'histc')            %# bar plot
set(gca, 'xlim',[e(1) e(end)])

output


2 решения:

  1. указать bin центров С 2-й аргумент hist.
  2. указать bin края С 2-й аргумент histc. Этот функция принимает некоторое дальнейшее обработка, поскольку это не так сгенерируйте график напрямую-следуйте ссылка для примера использования.

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

  • используйте histc, чтобы определить, какие ячейки каждая точка попадает внутрь.

  • затем используйте accumarray для подсчета количества элементов в каждой ячейке.

  • затем используйте bar для рисования баров выбранной ширины. Или просто создать заплаты заданных размеров. Использовать патч для этого.

или проще говоря, просто используйте ТСС.

hist(rand(1000,1),[0 .1 .3 .6 1])