How to plot a normal distribution graph to fit a bar graph?

조회 수: 14 (최근 30일)
Rita
Rita 2016년 11월 24일
댓글: Star Strider 2016년 11월 24일
I have a bar graph which in the x-axis shows the edge centers and y-axis are N I would like to plot a normal distribution graph to fit the bar graph.Any suggestion?I know histfit but I have the N and edges only!Thanks
  댓글 수: 2
Image Analyst
Image Analyst 2016년 11월 24일
So you want to fit the Normal distribution to the binned counts instead of the actual original data that you took the histogram of? Why? And why do you have only the counts and edges and not the original data? You had to have had the original data to get the counts, right?
Rita
Rita 2016년 11월 24일
Yes,I have calculated the percentage of the bins instead of counts for the yaxis.

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2016년 11월 24일
It’s easy enough to create your own version of histfit if you need to. See if this does what you want:
data = 0.5*randn(1,1000) + 2; % Create Data
mu = mean(data);
sd = std(data);
ndfcn = @(mu,sd,x) exp(-(x-mu).^2 ./ (2*sd^2)) /(sd*sqrt(2*pi)); % Standard Normal Distribution
[hc,edges] = histcounts(data, 25); % Histogram
ctrs = edges(1:length(edges)-1) + mean(diff(edges))/2; % Calculate Centres
ctrsx = linspace(min(ctrs), max(ctrs)); % High-Resolution Vector
sdnd = ndfcn(mu,sd,ctrsx); % Calculate Standard Normal Distribution
figure(1)
bar(ctrs, hc) % Plot Histogram
hold on
plot(ctrsx, sdnd*max(hc)/max(sdnd), '-r', 'LineWidth',2) % Plot Scaled Standard Normal Distribution
hold off
grid
Obviously, substitute your own data for my ‘data’ vector. I created mine to test my code.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2016년 11월 24일
I suggest reading the histfit() source and extracting the relevant portions of it -- using histfit() and figuring out a range with icdf and using pdf on the range

카테고리

Help CenterFile Exchange에서 Histograms에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by