gis散点图点大小算法

3 篇文章 0 订阅
3 篇文章 0 订阅

散点图介绍

        1、百度:散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量变化的大致趋势,据此可以选择合适的函数对数据点进行拟合

        2、ArcGIS散点图:散点图使用数据值作为 x,y 坐标来绘制点。它可以揭示格网上所绘制的值之间的关系,还可以显示数据的趋势。当存在大量数据点时,散点图的作用尤为明显。散点图与折线图相似,而不同之处在于折线图通过将点或数据点相连来显示每一个变化。

        3、大白话(个人理解):散点图是用点的大小,反应这组数据的值的大小

效果图

        这里以地图为例,使用是gis引擎,用户输入的半径范围为10-60,那么这组数据中最小值的点的半径就是10,最大值的点的半径就是60

代码

//ScatterData为一组点位数据,count为点位的臭氧浓度
let ScatterData = [
{ "lng": 118.388995, "lat": 35.02895273, "count": 0.8 }, 
{ "lng": 118.36172, "lat": 35.08427, "count": 0.2 }, 
{ "lng": 118.3564897, "lat": 35.02154007, "count": 0.7 }, 
{ "lng": 118.28092, "lat": 35.00027, "count": 0.2 }]

//从ScatterData中提取浓度字段
let countArr
ScatterData.map(item => {
 countArr.push(Number(item.count))
})

//提取出浓度的最大最小值
let maxData = Math.max(...countArr);
let minData = Math.min(...countArr);

//用户输入的半径范围
let minSize = 10;
let maxSize = 60;

//计算比例
let proportion = (maxSize - minSize) / (maxData - minData)

//遍历数组给数据的每个坐标添加点符号
ScatterData.map(item => {
  point = new Map.Point({
    coordinate: [item.lng, item.lat], //点的坐标
    style: {
      pointType: 'circle',  //点的形状
      radius: Number(item.count - minData) * proportion + minSize  //计算半径
    },
  });
  this.map.add(point)
})

重点

        算法核心为 proportion计算比例 和对 radius散点半径  的赋值

拓展

        掌握了核心:计算比例,应用处就很多,可以结合echarts饼状图,形成散点饼,更能展示出的对复杂数据的每个点位的区分,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
让用户可以随时查找曲线上任意的坐标(函数值) 附件的 .mht文件,是一个简单介绍贝塞尔三次插值的文档,可以用IE打开,更多贝塞尔插值的算法,可以用搜索引擎找 附件的 .xls文件,打开以后,会看见三个工作表,分别演示了 找一个数值在曲线上的一组对应 找一个数值在曲线上的所有对应 和贝塞尔曲线是怎样在通过每两个节的(每一对输入的X-Y数值代表平面坐标系的一个,称为节,Excel的平滑曲线通过每一个节) 要在其他Excel文档使用 BezireInt() 函数,需要按Alt+F11,双击模块一 复制所有文字 然后打开其他Excel文档按Alt+F11,插入---模块,然后粘贴所有文字 自定义函数的使用方法是: 在空白单元格输入 =BezierInt(X坐标的范围,Y坐标的范围,待查的数值) 函数就会返回一个包含六个元素的数组,分别是三个的X,Y坐标 如: 你根据 a1:a4的数值作为X值,b2:b4的数值作为Y值,画了一个平滑线散点图 想查找c1的数值是不是在这条曲线上 就可以输入 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,1) 得到曲线上第一个 X值=C1数值的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,2) 得到曲线上第一个 X值=C1数值的Y坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,3) 得到第2个 X值=C1数值的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,4) 得到第2个 X值=C1数值的Y坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,5) 得到第3个 X值=C1数值的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,6) 得到第3个 X值=C1数值的Y坐标 如果有多段曲线上的包含C1的数值,那么可以增加输入参数,指定从哪个节开始查找 =Index( BezierInt(a1:a4,b1:b4,c1,3),1,1) 得到从第三组X-Y数据开始查找, 返回第一个符合C1数值的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1,3),1,2) 得到从第三组X-Y数据开始查找,返回第一个符合C1数值的Y坐标 函数默认输入数值是X值,要根据Y值找的话,还可以增加输入参数, 指定输入的是Y值 =Index( BezierInt(a1:a4,b1:b4,c1,1,"Y"),1,1) 得到返回曲线上第一个 Y值=C1数值的X坐标如此类推......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值