当前位置:首页|资讯

在地图上绘制多个饼图和直方图

作者:MeteoInfo发布时间:2024-10-19

在地理空间上表示多个站点的特性值(比如温度)可以用散点图(scatter绘图函数),但散点图能表达的站点信息比较单一,为了表达更丰富的站点信息可以考虑在站点位置上绘制饼图和直方图。MeteoInfoLab里有pie和bar函数来绘制单个饼图和直方图,为了能在地图上绘制多个站点的饼图或者直方图,可以在每个站点生成一个坐标系(Axes),然后在该坐标系中绘制该站点的饼图或直方图。站点的空间位置可以用经纬度坐标来确定,而坐标系在图形(Figure)上的位置是依靠归一化的position参数来控制的,position=[0, 0, 1, 1]即是整个图形的范围。除了此归一化的position之外,MeteoInfoLab里坐标系还支持以像素为单位的position。

在一个地图坐标系中绘制多个站点的饼图或直方图中的一个关键问题是如何让站点对应的坐标系和站点的空间位置匹配上。这里给出一个解决方案,首先生成一个地图坐标系 ax,添加地图图形,设置地图范围等。

然后用地图坐标系的data2pixel函数将站点经纬度转换为图形上的像素坐标,需要注意的是在data2pixel函数之前需要用 draw()函数生成Figure并绘制地图坐标系为像素坐标计算提供基础。

利用上述计算出来的站点像素坐标来为每个站点生成坐标系,在坐标系中绘制饼图或直方图。需要注意的是axes函数生成坐标系需要用units='pixels'参数设置坐标系位置是像素坐标。

上述例子用到完整的中国区域,还需要绘制南海脚图。完整的代码如下:

需要注意的是在MeteoInfoLab软件界面中,图形大小的改变以及图形内容的缩放移动等操作,饼图或直方图坐标系并不会随站点位置的变化而变化。为了让图形有更好的固定性,可以在绘图函数最前面用 figure函数生成一个宽度和高度固定的图形。下面是一个实际数据的例子:



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1