Hello, I am trying to plot the lognormal distribution over 10 iterations and would like to see the mean and 3 sigma outliers. Somehow, doing this for lognormal plots does not look easy. Also, is it possible that I can skip the histogram in my plots and only look at the lognormal curves? This is the code snippet I am using. Thanks! figure(113); for i = 1:10 norm=histfit(Current_c(i,:),10,'lognormal'); %%Current_c is a 10*100 matrix %% [muHat, sigmaHat] = lognfit(Current_c(i,:)); % Plot bounds at +- 3 * sigma. lowBound = muHat - 3 * sigmaHat; highBound = muHat + 3 * sigmaHat; yl = ylim; %line([lowBound, lowBound], yl, 'Color', [0, .6, 0], 'LineWidth', 3); %line([highBound, highBound], yl, 'Color', [0, .6, 0], 'LineWidth', 3); line([muHat, muHat], yl, 'Color', [0, .6, 0], 'LineWidth', 3); grid on; set(gcf, 'Toolbar', 'none', 'Menu', 'none'); % Give a name to the title bar. set(gcf, 'Name', 'Line segmentation', 'NumberTitle', 'Off') hold on; end
Prashant Kumar answered .
2025-11-20
When plotting the lognormal distribution and marking the mean and 3σ3\sigma bounds, you need to handle the lognormal nature of the data carefully. For a lognormal distribution, the mean and standard deviation in the original (non-log) space differ from the parameters μ\mu and σ\sigma of the underlying normal distribution.
histfit, remove the bar plot that represents the histogram. This can be done by hiding or deleting it after creating the plot.
figure(113);
for i = 1:10
% Fit the lognormal distribution
[muHat, sigmaHat] = lognfit(Current_c(i,:));
% Generate the x-values for the fitted lognormal curve
x = linspace(min(Current_c(i,:)), max(Current_c(i,:)), 100);
y = lognpdf(x, muHat, sigmaHat);
% Plot the lognormal curve
plot(x, y, 'LineWidth', 2); % No histogram here
hold on;
% Calculate lognormal mean and 3-sigma bounds
lognormalMean = exp(muHat + (sigmaHat^2) / 2);
lowBound = exp(muHat - 3 * sigmaHat);
highBound = exp(muHat + 3 * sigmaHat);
% Plot vertical lines for mean and 3-sigma bounds
yl = ylim; % Get current y-axis limits
line([lognormalMean, lognormalMean], yl, 'Color', [0, 0.6, 0], 'LineWidth', 3, 'LineStyle', '--'); % Mean
line([lowBound, lowBound], yl, 'Color', [0.6, 0, 0], 'LineWidth', 2, 'LineStyle', ':'); % Lower bound
line([highBound, highBound], yl, 'Color', [0.6, 0, 0], 'LineWidth', 2, 'LineStyle', ':'); % Upper bound
grid on;
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
set(gcf, 'Name', 'Lognormal Distribution', 'NumberTitle', 'Off');
end
hold off;
histfit and replaced it with lognpdf to directly plot the lognormal curve.For each iteration:
Current_c(i,:).This approach avoids the histogram entirely and focuses on the lognormal curve and its statistical features.