You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB绘制geopolyshape时设置ColorData触发数组尺寸警告的解决方法

问题描述

在MATLAB 2024b中绘制geopolyshape对象时出现异常:

  • 不设置ColorData属性时,图形可正常渲染;
  • 设置ColorData属性后,MATLAB抛出**"Array is wrong shape or size"**警告,无法完成绘制。

复现代码如下:

lat = [41.9480823417544; ...
    41.9232620388895; ...
    41.9297343644414; ...
    41.9610354203583; ...
    41.9858827546380; ...
    41.9794019931882; ...
    41.9480823417544];

lon = [-71.5797574810054; ...
    -71.5494225035612; ...
    -71.5033771429879; ...
    -71.4876121649763; ...
    -71.5179362450247; ...
    -71.5640362454369; ...
    -71.5797574810054];


% 创建geopolyshape对象
shape = geopolyshape(lat, lon);

figure;
tiledlayout('flow');
nexttile;
geoplot(shape,'FaceColor','b');
title('正常显示')

nexttile;
geoplot(shape,'FaceColor','flat');
title('正常显示')

nexttile;
geoplot(shape,'FaceColor','flat','ColorData',1);
title('报错并抛出警告')

nexttile;
geoplot(shape,'ColorData',5);
title('报错并抛出警告')

警告信息:

Warning: Error creating or updating TriangleStrip
Error in value of property ColorData
Array is wrong shape or size

解决方案

问题根源是ColorData的维度与geopolyshape的面/顶点数量不匹配,针对单个多边形场景,可按以下方式修正:

  1. 当FaceColor设为'flat'时:
    ColorData需要与多边形的面数匹配(单个多边形面数为1),必须传入二维数组形式的标量,不能直接用单个数值。修正代码示例:
nexttile;
geoplot(shape,'FaceColor','flat','ColorData',[1]);
title('使用1×1 ColorData正常显示')
  1. 当FaceColor设为'interp'时:
    ColorData需要与多边形的顶点数匹配(示例中为7个顶点),此时会基于顶点颜色插值渲染面:
nexttile;
geoplot(shape,'FaceColor','interp','ColorData',rand(7,1));
title('使用顶点匹配的ColorData正常显示')

若你是批量绘制多个H3单元格(多个geopolyshape对象),ColorData的长度需等于单元格总数,每个值对应一个单元格的颜色。

内容的提问来源于stack exchange,提问作者Elpezmuerto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:01:08