# I have a plot and i want to switch it to histogram ,how i can do it?

1 view (last 30 days)
tasneem haikal on 16 Apr 2020
Commented: Rena Berman on 14 May 2020
clear all
numsteps=1000;
numwalks=1000;
stepmatrix = sign(rand(numwalks,numsteps)-0.5*ones(numwalks,numsteps));
posmatrix = (cumsum(stepmatrix,2))
mat=zeros(numwalks,1);
for j = 1:numwalks;
last = find(posmatrix(j,:)==0,1,'last');
if isempty(last)==0;
mat(j)=last;
end
end
mat
edges=-0.5:1:(numsteps+0.5)
[N,edges]=histcounts(mat,edges)
probability=N*(1/numwalks)
figure;
h1=plot(1:numsteps , probability(2:end));
figure
i write this code , and then i get what a plot like i want , but i want to plot it like a histogram
i try to add histogram(1:numsteps , probability(2:end)) but then i get an empty plot

#### 1 Comment

Rena Berman on 14 May 2020

Walter Roberson on 16 Apr 2020
bar(mean([edges(1:end-1);edges(2:end)]),N)
This uses the center of the bin as the bar position.

Sean de Wolski on 16 Apr 2020
Something like this
histogram(mat,edges,'Normalization','probability');

Sean de Wolski on 16 Apr 2020
You have too many edges so all you're seeing are the lines on the edges. Try downsampling edges by a factor of five or so and it will look like the figure:
histogram(mat,edges(1:5:end),'Normalization','probability');
Walter Roberson on 16 Apr 2020
Yes, the original histogram is too fine grained to be useful.
tasneem haikal on 17 Apr 2020
thanks alooot