Is it possible to draw a bar plot with percentage lines?

7 次查看(过去 30 天)
Hello!
I'm drawing a bar plot with data from a file, like this. The data is sorted into bars according to the exponent of each value in scientific notation. The code is shown below.
data = sort(data);
s = floor(log10(abs(data)));
x = unique(s);
y = histc(s, x);
figure('Name', file.name);
bar(x, y);
title(file.name, 'Interpreter', 'none');
barvalues;
The plot generated is something like this:
I was looking for a way to draw percentages in the plot, something like this (the percentages are completely made up):
Do you know if this is possible and how it could be done? Thank you so much!
  2 个评论
Adam Danz
Adam Danz 2019-9-12
What do you mean by "draw percentages"? What do those red lines represent?
Helena
Helena 2019-9-12
The red lines represent the percentage of each bar. I wanted the cumulative percentage, as shown in image. For instance, until -4 the total percentage is 1%, until -2 is %3... at 1 is 100%.

请先登录,再进行评论。

回答(2 个)

the cyclist
the cyclist 2019-9-12
I'm not sure if you are asking for them to be automatically positioned, but there are many options for drawing lines on a plot:

Adam Danz
Adam Danz 2019-9-12
编辑:Adam Danz 2019-9-13
Use cumsum() to compute the cumulative sum of each bar height. Then you can normalize it to the max bar height (this is how I interpreted your query but if you need something different, please add details).
Here's a functional demo
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
h = bar(y);
barcs = cumsum(h.YData);
% Normalize the cumsum to the max bar height
barcsNorm = barcs / barcs(end) .* h.YData;
% Plot lines
hold on
ph = plot([h.XData;h.XData], [zeros(size(barcsNorm)); barcsNorm], 'r-', 'LineWidth', 3);

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by