Matlab 用不同的数值表示不同的颜色——可视化不同色块

function [x,y,z] = frequency_visualization(tick_x,tick_y,tick_z,x_n,y_n,V)
% 此程序是对立方体中存储轨迹数据的频数进行可视化



% meshgrid 生成三维网格
[x,y,z] = meshgrid(tick_x,tick_y,tick_z);

% % 三维体切片平面
% cube = slice(x,y,z,z,tick_x,tick_y,tick_z);

% 用cat函数读取一列
frequency = cat(1,V.points);

% 最大频数
max_frequency = max(frequency);

% 控制不同频数的小立方体的颜色变化
% 控制颜色变化的条应该是10份(几份除以几)
% unit = max_frequency/10;


% 调用str_split函数
all_digital = str_split(V);

%%%%%%%%%%%%%%%% 显示三维立方体部分代码

% 按z轴进行切片,因为z轴长度较短,容易切片
for i =1: length(tick_z)
    
    % 打开一个新窗口
    % figure;
    
    % 字符串匹配
    % temp_i = num2str(i);
    
    % 索引
    index = [];
    % 检查此切面中的小立方体的频数,返回存储这些频数的索引index
    for k = 1:length(all_digital)
        if all_digital(k) ==i
            index = [index k];
        else
            continue
        end
    end
    % 取出这个切面中存储点的所有小立方体和其频数
    segment = V(index);
    
    % 将有频数的小立方体上色,频数越大越黑
    % 创建矩阵
    map = zeros(x_n-1,y_n-1);
    
    for j = 1:length(segment)
         
        % 将频数值存入相应的矩阵中
        a = segment(j).shape;
        b = strsplit(a,'*');
        c = str2num(b{1,1});
        d = str2num(b{1,2});
        % 赋值
        map(c,d) = segment(j).points;
        
    end
    
    % 归一化数值
    nor_map = abs(log(map / max_frequency));
    nor_map(nor_map == inf) =0;
    [col,row] = size(nor_map);
    temp_map = reshape(nor_map,[1,col * row]);
    tmp_max = max(temp_map);
    nor_map = nor_map / tmp_max;
    
    
    nor_map = 1-nor_map;
    % 将用数字表示颜色深浅的归一化二维矩阵nor_map显示到三维空间
    %%%%%%%% 重要的显示部分
    % nor_map = 1-nor_map;
    
    %画出可视化数据
    % matrixplot(nor_map,'XVarNames',XVarNames,'YVarNames',YVarNames,'DisplayOpt','off');  
    matrixplot(nor_map,'DisplayOpt','off');
    colormap(gray(256))
    
%     % 进行横切面操作
%     xslice = [];
%     yslice = [];
%     zslice =tick_z(i) ;
%     v = x.*exp(-x.^2-y.^2-z.^2);
%     % 切割并显示
%     slice(x,y,z,v,xslice,yslice,zslice);
    
    % 等比设置
    axis equal
    
    % axis设置轴范围和纵横比,off为取消对坐标轴的一切设置,on为开启
    axis off


    % 需要修改
    % 需要进行字符串设定
    name =  sprintf('%d.png',i);
    
    % 按name的文件名保存当前窗口
    saveas(gcf,name);
    
    
end


% % 显示,设置图形对象属性,FaceColor是面的颜色,Marker顶点用什么表示
% % set(cube,'FaceColor','none','Marker','o','MarkerFaceColor','y')
% set(cube,'FaceColor','none','Marker','none')


% % view视点的指定
% view(3)


end



上面是可视化的代码,其中需要调用两个函数str_split(此函数传入的参数是一个结构体)和matrixplot(传入的参数是数据矩阵)

function matrixplot(data,varargin)
%   根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。
%
%   matrixplot(data) 绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色
%                    块颜色由元素值大小决定。
%
%   matrixplot(data, 'PARAM1',val1, 'PARAM2',val2, ...) 
%          用成对出现的参数名/参数值控制色块的各项属性。可用的参数名/参数值如下:
%          'FigShape' --- 设定色块的形状,其参数值为:
%                'Square'  --- 方形(默认)
%                'Circle'  --- 圆形
%                'Ellipse' --- 椭圆形
%                'Hexagon' --- 六边形
%                'Dial'    --- 表盘形
%
%          'FigSize' --- 设定色块的大小,其参数值为:
%                'Full'    --- 最大色块(默认)
%                'Auto'    --- 根据矩阵元素值自动确定色块大小
%
%          'FigStyle' --- 设定矩阵图样式,其参数值为:
%                'Auto'    --- 矩形矩阵图(默认)
%                'Tril'    --- 下三角矩阵图
%                'Triu'    --- 上三角矩阵图
%
%          'FillStyle' --- 设定色块填充样式,其参数值为:
%                'Fill'    --- 填充色块内部(默认)
%                'NoFill'  --- 不填充色块内部
%
%          'DisplayOpt' --- 设定是否在色块中显示矩阵元素值,其参数值为:
%                'On'      --- 显示矩阵元素值(默认)
%                'Off'     --- 不显示矩阵元素值
%
%          'TextColor' --- 设定文字的颜色,其参数值为:
%                表示单色的字符('
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值