2015-07-24 7 views
0

Привет, поэтому я создал функцию, которая создает гистограмму со встроенной кривой с использованием histfit с заданным количеством ящиков, но мне также нужно добавить отдельные маркеры в центре каждого столбца на гистограмме, которая соответствует установленной кривой. Как я могу это сделать? Я подумал об использовании XData и YData с кривой, а затем перепрограммировал другую строку, но я не мог понять, как заставить ее фактически строить график в центре каждого бара?Добавление маркеров к гистограмме с установленной кривой распределения в Matlab?

+1

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

+0

, так и мой ответ помог вам? –

ответ

0

Вы можете использовать выходной аргумент во время вызова histfit, чтобы получить дескриптор созданного графика, который содержит всю информацию для объекта патча, образующего гистограмму, и объект линии для подгонки. Тогда это просто вопрос математики, чтобы получить середины в обоих направлениях x и y.

Вот пример:

clear 
clc 
close all 

%// Generate data 
rng default; 
r = normrnd(10,1,100,1); 

%// Use output to get handle 
hHist = histfit(r); 

hold on 

Теперь данные коммутационный соответствует 1 входу hHist:

hHist = 

    2x1 graphics array: 

    Patch 
    Line 

Получить Y данные и найти середин:

AllYData = get(hHist(1),'YData'); 

YData = AllYData(2,:)/2; 

Примечания что AllYData представляет собой массив 4x10, содержащий y координаты 4 кукурузы образующих каждый отдельный бар. Следовательно, нам нужно только максимальное значение (либо из двух верхних углов).

То же самое для й данных:

AllXData = get(hHist(1),'XData'); 

Здесь AllXData представляет собой 4 х 10 массив, содержащий х координаты каждого угла стержней, образующие гистограммы. Поэтому нас интересует только средний 2, образуя фактический диапазон х каждого бара. Затем выяснить, центр легко:

XRanges = AllXData(2:3,:); 

MidPoints = sum(XRanges)/2; 

И показывая все с scatter: (вы можете использовать plot, а также, конечно):

scatter(MidPoints,YData,80,'y','filled') 

Выход:

enter image description here

ура!

Смежные вопросы