shift horizontal histogram to right
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to shift the entire histogram to right, i.e. at 0.04 instead of 0, without changing the xticks.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/280019/image.jpeg)
6 commentaires
Réponse acceptée
Adam Danz
le 27 Mar 2020
Modifié(e) : Adam Danz
le 27 Mar 2020
Here's a demo that shows how to compute a probability density estimate for each column of data and how to plot the PDF curve next to each column of data. See inline comments for details.
% Produce a matrix of data where each column of y contains
% data for each vertical stack of dots with x-coordinates
% defined by x.
x = 0:5:50;
y = (randn(50, numel(x)) + linspace(.5,5,numel(x))) .* linspace(.5,2,numel(x));
% Plot the data
plot(x, y, 'bo')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/280085/image.png)
% Compute the probability density estimates (pdfx) for each column of y
nSets = size(y,2);
nPoints = 1000;
points = linspace(min(y(:)), max(y(:)), nPoints);
pdfx = cell2mat(arrayfun(@(col){ksdensity(y(:,col),points)'}, 1:nSets));
% Compute the interval between the x-values
xInterval = mean(diff(x)); % ie, = 5
% Normalize results so that all pdf values are
% between 0 and 85% of the x-interval while maintaining
% the relative heights across all pdf curves.
pdfxNorm = (pdfx - min(pdfx,[],'all')) * (xInterval*.85/range(pdfx(:)));
% NOTE: if you want each pdf curve's height to be independent
% and *not* maintaining the relative hights across all pdf
% curves, use this line instead:
% pdfxNorm = (pdfx - min(pdfx,[],1)) .* (xInterval*.85./range(pdfx,1));
% Horizontally offset the pdfxNorm values so each column
% corresponds to an associated x-value.
pdfxShift = pdfxNorm - min(pdfxNorm,[],1) + x;
% Compute y-values for the pdf curves so that the
% curves do not extend beyond the range of the
% data within each column.
pdfYvals = repmat(points(:),1,size(pdfxShift,2));
pdfYvals(pdfYvals < min(y, [], 1) | pdfYvals > max(y, [], 1)) = NaN;
% Add PDFs to plot
axis tight
xlim([min(x), max(x)+xInterval])
hold on
plot(pdfxShift, pdfYvals, 'r-')
grid on
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/280086/image.png)
Here's an example of independent-height option for the pdfxNorm variable, using different random data.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/280088/image.png)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Histograms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!