Problems trying to use bar

2 次查看(过去 30 天)
Hello im suffering some problem while trying to plot my data into bars. i have an array(7000x2)
data=xlsread('data.xlsx');
a= sortrows(data);
a(a(:,2) == 0, :) = [] ;
[U1,~,G1] = uniquetol(a(:,1));
S1 = accumarray(G1(:),a(:,2));
M1 = [U1,S1];
figure
plot(M1(:,1),M1(:,2))
ylabel('data')
xlabel('alpha')
What i want to obtain is the same figure but instead of lines with bars. I tried using bar instead of plot but nothing is showing.
Thank u in advance.
  2 个评论
Rik
Rik 2020-6-10
Those bars are just too thin for you to see:
bar(M1(:,1),M1(:,2)),hold on
plot(M1(:,1),M1(:,2),'.b')
xlim([0 0.01])
Borja Zamarreño
Borja Zamarreño 2020-6-10
Thank for your response, there is no option to wide those bars then?

请先登录,再进行评论。

采纳的回答

Rik
Rik 2020-6-10
You can use the function below to create fake bars by using plot. This function accepts (nearly) all input arguments that plot accepts.
data=xlsread('data.xlsx');
a= sortrows(data);
a(a(:,2) == 0, :) = [] ;
[U1,~,G1] = uniquetol(a(:,1));
S1 = accumarray(G1(:),a(:,2));
M1 = [U1,S1];
figure(1),clf(1)
subplot(1,2,1)
bar(M1(:,1),M1(:,2)),hold on
plot(M1(:,1),M1(:,2),'.b')
xlim([0 0.01])
title('zoomed in')
subplot(1,2,2)
linebar(M1(:,1),M1(:,2),'b')
title('fake bars with lines')
function linebar(x,y,varargin)
x_=x(:);
sz=size(x_);
x_=[NaN(sz) x_ x_]';
y_=[NaN(sz) zeros(sz) y(:)]';
plot(x_,y_,varargin{:})
end
You can vastly increase the perfomance if you make it a continuous line by returning to y=0 instead of using NaN, but that is up to you.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Distribution Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by