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的面/顶点数量不匹配,针对单个多边形场景,可按以下方式修正:
- 当
FaceColor设为'flat'时:ColorData需要与多边形的面数匹配(单个多边形面数为1),必须传入二维数组形式的标量,不能直接用单个数值。修正代码示例:
nexttile; geoplot(shape,'FaceColor','flat','ColorData',[1]); title('使用1×1 ColorData正常显示')
- 当
FaceColor设为'interp'时:ColorData需要与多边形的顶点数匹配(示例中为7个顶点),此时会基于顶点颜色插值渲染面:
nexttile; geoplot(shape,'FaceColor','interp','ColorData',rand(7,1)); title('使用顶点匹配的ColorData正常显示')
若你是批量绘制多个H3单元格(多个geopolyshape对象),ColorData的长度需等于单元格总数,每个值对应一个单元格的颜色。
内容的提问来源于stack exchange,提问作者Elpezmuerto
相关产品推荐
相关产品推荐

