目录
1.基础版
调用方式如下
MyWaterFall([5 2 6 3 1], ["A" "B" "C" "D" "E"]);
效果图
代码如下
function hfig = MyWaterFall(data, Xlabel)
len = length(data);
hfig = figure;
axes1 = axes('Parent',hfig);
hold on;
width = 40;
xbegin = 10;
ybegin = 0;
set(axes1, 'XTick', xbegin+width/2:width*1.5:xbegin+width/2+(len+1)*1.5*width,...
'XTickLabel', [Xlabel "总计"]);
for i = 1:len
text(xbegin+width/2+(i-1)*1.5*width, sum(data(1:i)), num2str(data(i), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','bottom');
end
text(xbegin+width/2+(len)*1.5*width, sum(data), num2str(sum(data), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','bottom');
for i = 1:len
rectangle('Position',[xbegin, ybegin, width, data(i)],'facecolor',[0.8500 0.3250 0.0980],...
'LineWidth',0.5);
plot([xbegin+width xbegin+1.5*width],[ybegin+data(i) ybegin+data(i)],'k-');
xbegin = xbegin + width * 1.5;
ybegin = ybegin +data(i);
end
rectangle('Position',[xbegin, 0, width, ybegin],'facecolor',[0.8500 0.3250 0.0980],...
'LineWidth',0.5);
end
2.进阶版
可以显示负数,调用方式如下
MyWaterFall([6 -3 4 -5 8],["A" "B" "C" "D" "E"]);
代码如下
function hfig = MyWaterFall(data, Xlabel)
len = length(data);
hfig = figure;
axes1 = axes('Parent',hfig);
hold on;
width = 40;
xbegin = 10;
ybegin = 0;
set(axes1, 'XTick', xbegin+width/2:width*1.5:xbegin+width/2+(len+1)*1.5*width,...
'XTickLabel', [Xlabel "总计"]);
for i = 1:len
if data(i) >= 0
text(xbegin+width/2+(i-1)*1.5*width, sum(data(1:i)), num2str(data(i), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','bottom');
else
text(xbegin+width/2+(i-1)*1.5*width, sum(data(1:i)), num2str(data(i), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','top');
end
end
if sum(data) >= 0
text(xbegin+width/2+(len)*1.5*width, sum(data), num2str(sum(data), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','bottom');
else
text(xbegin+width/2+(len)*1.5*width, sum(data), num2str(sum(data), '%g'),...
'HorizontalAlignment','center','VerticalAlignment','top');
end
for i = 1:len
if data(i) >= 0
rectangle('Position',[xbegin, ybegin, width, data(i)],'facecolor',[0.8500 0.3250 0.0980],...
'LineWidth',0.5);
else
rectangle('Position',[xbegin, ybegin+data(i), width, -data(i)],'facecolor',[0 0.4470 0.7410],...
'LineWidth',0.5);
end
plot([xbegin+width xbegin+1.5*width],[ybegin+data(i) ybegin+data(i)],'k-');
xbegin = xbegin + width * 1.5;
ybegin = ybegin +data(i);
end
if sum(data) >= 0
rectangle('Position',[xbegin, 0, width, ybegin],'facecolor',[0.8500 0.3250 0.0980],...
'LineWidth',0.5);
else
rectangle('Position',[xbegin, ybegin, width, -ybegin],'facecolor',[0.8500 0.3250 0.0980],...
'LineWidth',0.5);
end
end
CSDN下载链接MyWaterFall.m-其它文档类资源-CSDN下载
3.交流讨论
有什么疑问可以进群交流