MATLAB使用多个扇形颜色变化表示空间一个点的多种数值

MATLAB使用多个扇形颜色变化表示空间一个点的多种数值

excel中表格中数据格式,多行

lon lat data1 data2 data3
117 38 0.1 1 100
python 复制代码
clear;close all;
figure('Position',[100 100 800 800]);

num_points = 14; 
[num,txt,raw] = xlsread('test.xlsx');
x = num(:,1);
y = num(:,2);


data1 = num(:,3);  % 维度1 
data2 = num(:,4);   % 维度2 
data3 = num(:,5);  % 维度3
% 归一化数据到 [0,1]
data1_norm = (data1 - min(data1)) / (max(data1) - min(data1));
data2_norm = (data2 - min(data2)) / (max(data2) - min(data2));
data3_norm = (data3 - min(data3)) / (max(data3) - min(data3));


cmap_red = hot(256);   
cmap_green = cool(256);
cmap_blue = copper(256); 


% 扇形的半径和角度
radius = 0.06;  % 扇形半径(根据点间距调整)
theta = linspace(0, 2*pi, 100);  % 完整圆周
sector_angle = 120;  % 每个扇形占120度

for i = 1:num_points
    % 当前点的中心坐标
    center_x = x(i);
    center_y = y(i);
    
    % 绘制三个扇形(每个扇形120度)
    for sector = 1:3
        % 计算扇形起始和结束角度
        start_angle = (sector-1) * sector_angle;
        end_angle = sector * sector_angle;
        
        % 生成扇形边缘坐标(极坐标转笛卡尔坐标)
        angles = linspace(start_angle, end_angle, 50);
        angles_rad = deg2rad(angles);
        x_sector = center_x + radius * [0, cos(angles_rad), 0];
        y_sector = center_y + radius * [0, sin(angles_rad), 0];
        
        % 根据数据维度选择颜色
        switch sector
            case 1  % 第一个扇形对应data1
                color_value = cmap_red(ceil(data1_norm(i)*255 + 1), :);
            case 2  % 第二个扇形对应data2
                color_value = cmap_green(ceil(data2_norm(i)*255 + 1), :);
                
            case 3  % 第三个扇形对应data3
                color_value = cmap_blue(ceil(data3_norm(i)*255 + 1), :);
               
        end
        
        % 绘制扇形
        patch(x_sector, y_sector, color_value, 'EdgeColor', 'none','Markersize',12,'FaceAlpha',1);
    end
end

hold on;
plot(x,y,'k.','MarkerSize',10)
axis equal;
xlim([117, 121]);
ylim([34, 37]);
box on;
set(gca,'FontSize',16);
set(gca,'Layer','top','linewidth',1.2,'xminortick','on','yminortick','on');
mt = 0.4;

ax_red = axes('Position', [0.1+mt 0.25 0.2 0.2]);
colormap(ax_red, cmap_red);
caxis(ax_red, [min(data1), max(data1)]);
c = colorbar(ax_red, 'Location', 'east');
set(get(c,'title'),'string','气温','fontsize',10);
ax_red.Visible = 'off';



ax_green = axes('Position', [0.2+mt 0.25 0.2 0.2]);
colormap(ax_green, cmap_green);
caxis(ax_green, [min(data2), max(data2)]);
c = colorbar(ax_green, 'Location', 'east');
ax_green.Visible = 'off';
set(get(c,'title'),'string','气压','fontsize',10);


ax_blue = axes('Position', [0.3+mt 0.25 0.2 0.2]);
colormap(ax_blue, cmap_blue);
caxis(ax_blue, [min(data3), max(data3)]);
c = colorbar(ax_blue, 'Location', 'east');
ax_blue.Visible = 'off';
set(get(c,'title'),'string','降水','fontsize',10);
相关推荐
说私域3 分钟前
全民电商时代下的链动2+1模式与S2B2C商城小程序:社交裂变与供应链协同的营销革命
开发语言·人工智能·小程序·php·流量运营
且去填词9 分钟前
三色标记法与混合写屏障:Go GC 垃圾回收全流程解析
开发语言·算法·golang·三色标记法·gogc·屏障技术
froginwe1110 分钟前
`.addClass()` 方法详解
开发语言
机器视觉知识推荐、就业指导14 分钟前
Qt 6 所有 C++ 类(官方完整清单 · 原始索引版)
开发语言·c++·qt
一口面条一口蒜14 分钟前
R 包构建 + GitHub 部署全流程
开发语言·r语言·github
IT199516 分钟前
C++ 实战笔记:OpenSSL3.5.2 实现 SM2 数据加密(附完整源码 + 注释)
开发语言·c++·笔记
leaves falling19 分钟前
c语言自定义类型深度解析:联合(Union)与枚举(Enum)
c语言·开发语言·算法
slandarer26 分钟前
MATLAB | 如何使用MATLAB制作猫猫围棋小游戏
matlab·小游戏·围棋
FJW02081427 分钟前
Python推导式与生成器
开发语言·python
xb113235 分钟前
C# WinForms界面设计
开发语言·c#