【发布时间】:2017-03-18 16:40:41
【问题描述】:
我需要用我的数据制作堆积条形图,如下所示: Graph1
我的数据集:
data1 = [0 0 3.16 25.08 46.87 57.97 39.25 28.81 10.63 0.06 0 0]
data2 = [74.00 152.68 319.99 514.05 635.73 647.61 645.32 569.51 398.48 226.13 84.88 52.08]
data3 = [628.07 497.66 426.97 285.56 220.67 184.04 212.71 239.93 318.25 451.61 545.02 626.39]
如果我这样做:
x = 1:12;
y = [data2' data1' data3'];
bar(handles.axes1,x,y,'stacked')
看起来像这样: Graph2
所以我需要将绿色部分设为第一张图上的负值(蓝色值)
如果我在经典工作区中这样做:
x = 1:12;
y1 = [data2' data3'];
bar(x,y1,'stacked')
hold on
bar(x, -data1, 'g')
hold off
它看起来如我所愿,但如果我在 GUI 中这样做
x = 1:12;
y1 = [data2' data3'];
bar(handles.axes1,x,y1,'stacked')
hold on
bar(handles.axes1,x, -data1, 'g')
hold off
仅绘制负值。 谢谢你的建议。
【问题讨论】:
-
无法重现您的问题。当我在 GUI 中使用您的代码时,我会得到与经典工作区相同的图形。你用什么 Matlab 版本?
-
我的版本是R2015b。
-
嗯,当我只创建带有按钮和图形的 GUI 时,它工作正常,正如你所说。也许问题出在其他地方。我将向您描述获取数据集的方式。我有 2 个图形用户界面。在第一个 GUI 中,我定义了参数,并用这个参数调用了另一个函数。输入参数是此功能的输入。我将这个功能的输出存储在名为“data”的结构中。我想在另一个 GUI 中绘制这个数据集(如前所述)。所以我通过
setappdata(0,'data',data)将结构输出保存到根目录在绘图GUI中我调用数据data = getappdata(0,'data'); -
其余代码相同...只是 y 是
y1 = [data.data2' data.data3']; -
绘制GUI的整个代码是这样的:
handles.output = hObject; data = getappdata(0,'data'); x = 1:12; y1 = [data.data2' data.data3']; bar(handles.axes1,x,y1,'stacked') hold on bar(handles.axes1,x, -data.data1, 'g') hold off这是唯一的区别,数据不是手动定义的,而是从另一个函数评估和调用的。
标签: matlab user-interface bar-chart