matlab 按颜色画网格bar3 不同于surf,pcolor(儿子的papa)

来源:互联网 发布:org.apache.http jar 编辑:程序博客网 时间:2024/05/16 08:42

clear allclcclose all[x,y,z]=peaks(60);h=bar3(z,1)for i = 1:length(h)    zdata = get(h(i),'ZData');    set(h(i),'CData',zdata)    % Add back edge color removed by interpolating shading    set(h,'EdgeColor','w')     alpha(h,0.9)endaxis equalgrid offview(0,-90)hidden offcolorbar% axis offsurf(z,'edgecolor','w')axis equalview(0,90)hidden offcolorbar

之前,画3D的平面都是用surf,然后再view(0,90)

一个小问题,当数据维数不大的时候,无太多差异。


这是两组60*60的数据,上面是bar3,下面是surf。


当数据比较少的时候,如果只有6*6




差异就明显了,上图bar3,每行有6个格,下图surf,第行有5个格,是两个值的差异来画的。



所以,当数据多的时候,或是只关注曲面的变化形势时,用surf没问题,esle,如果要说明一个图有多少个点,比如神经网络的节点个数,则最好使用bar3。


更新:

col=z;h=imagesc(col);axis equalaxis tight% k=[0 max(z(:))-min(z(:))]k=[min(z(:)) max(z(:))]colormap(jet)caxis(k);view(0,90)colorbar


又更新: 

02-Mar-2016 14:13:41

每次用surf画图都少一行,少一列,也不是那个事儿.

于是,写了一个小函数.生成新的x,y,z,可以直接surf,然后,维数还是正确的.

function [ X,Y,z_new ] = fun_mm_shift( z )%UNTITLED Summary of this function goes here%   Detailed explanation goes here[m,n]=size(z);[X,Y]=meshgrid([1:(n+1)]-0.5,[1:(m+1)]-0.5);tm=z;tm=[z;z(end,:)];z_new=[tm';tm(:,end)']';end

 把z扔里面.就出来对应的新的x,y,z了.老好用了.


0 0
原创粉丝点击