基于matlab的三维柱状图绘制

本文介绍如何使用Matlab绘制三维柱状图,并通过实例演示了如何设置标签、颜色和视图等属性,以及如何进行更精细的颜色映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于matlab的三维柱状图绘制


摘要: 对于生物建模、数据统计等,经常会得到三维数据,绘制三维柱状图是显示它们的重要方式。但matlab绘制三维柱状图,可能需要进一步的人工干预才能得到预想的效果。这里简要介绍一下基于matlab的三维柱状图绘制。 ...
简介
对于生物建模、数据统计等,经常会得到三维数据,绘制三维柱状图是显示它们的重要方式。但matlab绘制三维柱状图,可能需要进一步的人工干预才能得到预想的效果。这里简要介绍一下基于matlab的三维柱状图绘制。
注:部分内容参考网络共享。

实例
  1. function main()
  2. % 现要画出其分组3维柱状图。
  3. % 最简单的写法如下:

  4. clc; clear all; close all;
  5. label1 = {'张三', '李四', '王二', '胡汉三'};%标签
  6. label2 = {'合格率','次品率','废品率'};%标签
  7. Z = rand(3, 4);
  8. hb = bar3(Z);
  9. renderCDataByHeight(hb, false);
  10. colorbar;
  11. set(gca, 'xticklabel', label1);
  12. set(gca, 'yticklabel', label2);
  13. view([-28, 40])
  14. %文字标注
  15. for i = 1:size(Z,1)
  16.     for j = 1:size(Z,2)
  17.         text(j, i, Z(i,j)+0.01, num2str(Z(i,j)));
  18.     end
  19. end
  20. pause(1);
  21. renderCDataByHeight(hb, true);
  22. pause(1);
  23. renderCDataByHeight(hb, true);
  24. colormap spring; 




  25. function renderCDataByHeight(hb, interp)
  26. % hb为bar3返回的三维柱状图句柄,
  27. % 对hb的各柱子按高度渲染CData属性,
  28. % interp指定是否渐变(默认为false)
  29. % interp==true:每个柱子从下到上颜色渐变
  30. % interp==false:每个柱子一种颜色
  31. % hb中句柄个数等于数据列数,hb(j)为第j列数据的句柄
  32. if nargin == 1
  33.     % interp默认值
  34.     interp=false;
  35. end
  36. if interp == true
  37.     %每个柱子从下到上颜色渐变
  38.     shading interp;
  39.     for j = 1 : length(hb)
  40.         % 用Zdata属性去填充Cdata属性
  41.         zdata = get(hb(j), 'Zdata');
  42.         set(hb(j), 'Cdata', zdata);
  43.         % 设置边线颜色
  44.         set(hb, 'EdgeColor', [0.5 0.5 0.5]);
  45.     end
  46. else
  47.     % 每个柱子一种颜色
  48.     for j = 1:length(hb)
  49.         % 设置hb(j)的Cdata属性
  50.         % 制作CData新值cdata用以替换其旧值
  51.         % cdata将在ZData的基础上修改而成
  52.         cdata = get(hb(j), 'ZData');
  53.         % cdata行数除以6就是数据行数
  54.         m = size(cdata,1)/6;
  55.         % 填充cdata
  56.         for i = 1:m
  57.             % 设置cdata中(i,j)数据对应的6行
  58.             % 将这6行的值均填充(i,j)数据的值
  59.             vij = cdata((i-1)*6+2,2);%可由cdata(ZData)中获得(i,j)数据的值
  60.             cdata((i-1)*6+1:(i-1)*6+6,:) = vij;%(i,j)数据对应的6行填充完毕
  61.         end
  62.         set(hb(j), 'Cdata', cdata);%将cdata赋给Cdata属性
  63.     end
  64. end
复制代码
结果
ceshi1.gif 

总结
结合颜色映射表来绘制柱状图,通过进一步调整一般可以达到要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值