从条形图中提取值时出错?

时间:2017-05-03 01:53:52

标签: matlab plot bar-chart

d=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
bar_widh=0.2;
figure; 
h = bar(d,bar_widh);
for i=1:2:4
  for j=1:4
   x=d(i,j)
   y=d(i+1,j)
   figure,plot(x,y);
  end
i=i+1;
end

在这段代码中,我绘制了一个条形图,我想从条形图中提取值。 (值被正确提取,但只绘制了一个点;不是一条线)但是我得到了错误的结果。 我的目标是在

之间划一条线
                                 d(1,1) and d(2,1);d(3,1) and d(4,1);
                                 d(1,2) and d(2,2);d(3,2) and d(4,2);
                                 d(1,3) and d(2,3);d(3,3) and d(4,3);
                                 d(1,4) and d(2,4);d(3,4) and d(4,4);

在第一个图中我需要2行(来自1列);在第二个图中我需要2行(从2列);在第三个图中我需要2行(从3列开始),在第四个图中我需要2行(从4列)。 no.of数字= no.of列

版本2 我尝试了另一个版本

d=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
bar_widh=0.2;
figure; 
h = bar(d,bar_widh);
saveas(h,'testfigure.fig');
clear
close all
h=hgload('testfigure.fig');
ch=get(h,'Children');
l=get(ch,'Children');
x=get(l,'Xdata');
y=get(l,'Ydata');

我的错误是

Error using get
Conversion to double from cell is not possible.

Error in Untitled5 (line 10)
l=get(ch,'Children');

1 个答案:

答案 0 :(得分:0)

d=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];
bar_widh=0.2;
figure; 
h = bar(d,bar_widh);
figure; hold on;

for i = 1:size(d,2)
    x = [d(1,i) d(2,i)];
    y = [d(3,i) d(4,i)];
    plot(x,y);
end

要绘制线条,您必须确保x中的参数yplot(x,y)是向量而不是标量。例如,要绘制P1 = [P1x, P1y]P2 = [P2x, P2y]之间的一条线,参数应为:

x = [P1x, P2x]; y = [P1y, P2y];

enter image description here