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

Скажем, если у меня есть точечная диаграмма:

dat = [1+(5-1).*rand(1000,1);89;92];
dat2 = dat+0.2;
scatter(dat,dat2);

Как видно из графика, есть две точки, которые значительно превышают остальные значения. Есть ли способ получить пределы оси для области, где находится большинство значений?


person KatyB    schedule 11.12.2012    source источник


Ответы (1)


Это зависит от вашего определения «большинства», но для таких задач обычно следует использовать статистические инструменты, такие как mean и std.

Предположим, что большинство точек лежат в пределах одного стандартного отклонения от среднего значения. В соответствии с этой логикой вам нужно найти все точки, попадающие в этот диапазон по оси x и по оси y:

xmaj = dat(abs(dat - mean(dat)) < std(dat));
ymaj = dat2(abs(dat2 - mean(dat2)) < std(dat2));

Теперь xmaj и ymaj содержат координаты "большинства" точек. Чтобы получить пределы оси области, содержащей большинство точек, просто выполните:

xlims = [min(xmaj), max(xmaj)]
ylims = [min(ymaj), max(ymaj)]

Для вашего примера вы должны что-то вроде этого:

xlims =

    1.0053    4.9969


ylims =

    1.2053    5.1969
person Eitan T    schedule 11.12.2012