Statistic bar chart and lining the points of bar charts
6 次查看(过去 30 天)
显示 更早的评论
Hi Dears,
How can I have a line go through all the bar in the graph?
And how can I have the value of n_random label on each bar?
Please help me. I really appreciate that
clc;
close all;
clear all;
n = 50;
p = 0.2;
n_random = randi(15,1,n);
for i = 1:1:numel(n_random);
y= poisspdf(n_random(i),p);
figure (1);
yyaxis left;
bar(i,y);
hold on;
yb = cat(1, y.YData);
xb = bsxfun(@plus, h(1).XData, [h.XOffset]');
hold on;
padval = 1;
htxt = text(xb(:),yb(:)-padval, cellstr(num2str(yb(:))), ...
'rotation', 90, 'horiz', 'right');
set(htxt(1:3:end), 'color', 'w');
end
grid on;
sum1 = sum(y{i});
mean1 = mean(y{i});
fprintf('Mean of D is: %d',mean1);
0 个评论
回答(1 个)
Shree Charan M L
2023-10-21
Hi Tu Nguyen,
I understand that you want to plot a line that goes through all the bars of the graph and display the value of “n_random” on top of each bar. However, the code you have provided is unclear with respect to what you’re trying to achieve with the “xb” and “yb” variables. The variable “h” is not defined, and it may be useful to share the entire code snippet.
A line that goes through each bar can be plotted by using the “line” function. You can read more about the same here: https://www.mathworks.com/help/matlab/ref/line.html
You can display the value of “n_random” on top of the bar using the “text” function. You can read more on the same here: https://www.mathworks.com/help/matlab/ref/text.html. You may also refer to this MATLAB Answers thread: https://www.mathworks.com/matlabcentral/answers/351875-how-to-plot-numbers-on-top-of-bar-graphs for an example on the same.
Assuming, that you want to plot the Poisson probability density of “n_random”, plot a line that goes through each bar and then label the top of each bar with the value of “n_random”, the following code snippet would do the trick:
clc;
close all;
clear;
n = 50;
p = 0.2;
n_random = randi(15, 1, n);
figure(1);
yyaxis left;
hold on;
y = poisspdf(n_random, p);
for i = 1:numel(n_random)
bar(i, y(i));
end
line(1:numel(n_random), y', 'Color', 'red', 'LineWidth', 2);
text(1:numel(n_random),y',num2str(n_random'),'vert','bottom','horiz','center');
ylabel('Probability');
xlabel('Index');
title('Poisson Distribution');
xticks(1:numel(n_random));
xticklabels(cellstr(num2str(n_random')));
hold off;
grid on;
mean1 = mean(n_random);
fprintf('Mean of n_random is: %d\n', mean1);
Hope this helps.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Bar Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!