(更新啦!今天是水球图)送给不会ECHARTS的小伙子们,祝你们早日找到对象

楼主
我是社区第144591位番薯,欢迎点我头像关注我哦~

记录我自己写的一些echarts案例,会直接放源码,和傻瓜式操作教程

分享扩散:

沙发
发表于 2022-7-27 09:34:26

一.坐标热力图

 

1.最终实现样式

 

 

2.傻瓜式操作步骤

 

1.)这个图表想要实现需要三列,一列分类,一列系列,一列明细数据,由于这个功能比较死板,麻烦做的时候一定要注意顺序问题,重中之重!

 

下面是数据格式,第一列就是系列,也就是纵坐标需要展示的值,第二列是分类,不用太详细说了,第三列非常重要,这列是把系列坐标、分类坐标以及数值拼接起来的,排序1就是系列坐标,为什么我的表格里面系列排序是倒序的?因为这个坐标热力图是按照象限来展示的,越往上,Y值越大,同理,分类越往右,X值越大。

 

 

2.)sql取数时,要把这三列单独拼接起来,分类和系类要用distinct去重后拼接,顺序顺序顺序!切记listagg拼接后数据展示的顺序!

 

 

 

 

3.)拖入echarts组件到报表中,然后依次点击添加数据结构>二位数组结构>明细计算,配置的时候,一定要按照分类、系列、坐标明细这样的顺序设置

 

 

 

 

 

4.)JS,进入编码编辑器,把下方JS复制进去即可,JS不需要你做任何操作,只要按照上方操作SQL。

 

 

var TABLE_DATA = getData('data1')[1];



var datadetail=TABLE_DATA[2];

datadetail=datadetail.toString();

var str=datadetail.split(",").map(Number);

let max=Math.max.apply(null, str);

// prettier-ignore

var result = [];

for(var i=0;i<str.length;i+=3){

    result.push(str.slice(i,i+3));

}





categoryn=TABLE_DATA[0].toString();

var ca=categoryn.split(",");

const hours = ca;



seriesn=TABLE_DATA[1].toString();

var se=seriesn.split(",");

const days =se;



// prettier-ignore



const data =result

    .map(function (item) {

    return [item[1], item[0], item[2] || '-'];

});

option = {

  tooltip: {

    position: 'top'

  },

  grid: {

    height: '50%',

    top: '10%'

  },

  xAxis: {

    type: 'category',

    data: hours,

    splitArea: {

      show: true

    }

  },

  yAxis: {

    type: 'category',

    data: days,

    splitArea: {

      show: true

    }

  },

  visualMap: {

    min: 0,

    max: max,

    calculable: true,

    orient: 'horizontal',

    left: 'center',

    bottom: '15%',

    inRange: {

                    color: ['#63be7b', "#ffdb81","#d5595c"]// 修改热力图的颜色 淡蓝色=>深蓝色的过度

                }

  },

  series: [

    {

      name: 'Punch Card',

      type: 'heatmap',

      data: data,

      label: {

        show: true

      },

      emphasis: {

        itemStyle: {

          shadowBlur: max,

          shadowColor: 'rgba(0, 0, 0, 0.5)'

        }

      }

    }

  ]

};
板凳
发表于 2022-7-27 13:17:09
地板
发表于 2022-7-27 15:01:30
优秀,多写点
5楼
发表于 2022-7-27 17:07:40
学会了,对象去哪领
6楼
发表于 2022-7-28 16:11:10
我还写过一个可以配置sql自动生成echarts图表的程序,仅有柱状图,线,面,热力图。像finebi这么智能,还是省好大力气的。
7楼
发表于 2022-8-1 14:13:32
  学习了
8楼
发表于 2022-8-2 08:58:12
什么?对象还有发的吗?我之前都是自己NEW一个
9楼
发表于 2022-8-2 19:11:12 发布于APP客户端
厉害
10楼
发表于 2022-8-9 14:27:22
以下内容我借鉴了19年 hanjiangdudiao 这个用户的教程,原地址:https://bbs.fanruan.com/forum.php?mod=viewthread&tid=125465&page=1#pid686651
 
正文
 
水滴图来啦!原来要收费1000块,我这里免费啊!
 
1.将下列文件解压到${HOME}/webapps/webroot/scripts/js
(纯小白看这行:${HOME}的意思就是安装地址,右击桌面上帆软的图标>点击打开文件所在位置,然后往上一级的目录就是这个${HOME})

 

2.新建一个数据集(第一个数字将是水球图中展示的数字,所以要注意排序,同时当第一个数字小与第二个数字的时候,第一个的图就会出不来,只有一个数字的时候不用在乎这点。


 

3.开始处理ehcarts,随便拖一个lab控件到frm里面。然后点击事件,选择初始化后,会出现下面的图。


 

图片中的框框1就是让你去引用一开始给你的JS文件,引用之后在框框2中去引用ds1中的数据,value函数如果不懂的话一定要研究透彻,这个函数能获取到数据集中的数据。

 

然后将下面的JS放到框框3里面!如果想要玩的花一点,就仔细的研读注释中的内容,觉得默认的还不够花,可以到这个文档里面去自己研究https://github.com/ecomfe/echarts-liquidfill

 
//1.这里是定时器,去掉就加载不出来图了

//将内容转为字符串,以逗号隔开
var str=ss.toString();

//将内容转为数组,以逗号隔开
var data=str.split(",");

setTimeout(function (){
//2.删除掉当前标签控件所有的子节点,不然还是会用默认的标签属性
$("div[widgetname=LABEL0_C]").empty();  
//3.往这个标签里面推入一个div属性,重点是要往里面推入一个id,这样我们可以直接对这个ID进行操作。
$("div[widgetname=LABEL0_C]").append("<div style='width:100%;height:100%;' id='sq'></div>");

//4.就是这里引用到了上面的ID,往对应这个ID的div属性中加入一个echarts,命名为myChart
var myChart = echarts.init(document.getElementById("sq"));
//5.将ss数据以逗号分割成数组
//var data=ss.split(",");

//6.这里就是这个水球图的图形代码了
var option = {
    series: [{
        type: 'liquidFill',//liquidFill意思就是这次展示我就用水球图
        data: data,
//data表示你要用什么数据,ss就是上面的参数传入的值,不想取数想要写死可以用这个格式[0.2,0.5,0.8],里面的数字可以唯一替换,但是格式不可以
        //color: ['red', '#0f0', 'rgb(0, 0, 255)'],//这里就是修改每个数据的颜色,当这里面的颜色比数据的量少时,就会从头开始用这些颜色。参考帆软自带的颜色设置
        //waveAnimation: false,//禁止波浪左右移动,我不喜欢,所以注释了
        //amplitude: 0,//让波浪消失变成直线,我也不喜欢这个功能,注释了!
        //outline: {show: false}//把外面那个圈圈去掉
        //shape: 'path://M768,170.666667h-128V128c0-25.6-17.066667-42.666667-42.666667-42.666667h-170.666666c-25.6,0-42.666667,17.066667-42.666667,42.666667v42.666667H256c-25.6,0-42.666667,17.066667-42.666667,42.666666v682.666667c0,25.6,17.066667,42.666667,42.666667,42.666667h512c25.6,0,42.666667-17.066667,42.666667-42.666667V213.333333c0-25.6-17.066667-42.666667-42.666667-42.666666z,m-42.666667,682.666666H298.666667V256h170.666666V170.666667h85.333334v85.333333h170.666666v597.333333z',//shape的意思就是本来是球形的,你要不喜欢,可以到阿里图库下载一个你喜欢的图片,记住,要下载成SVG代码,然后直接把代码替换到单引号之间来就可以拉!
        label: {formatter: '你gua我\n\n{c}',  fontSize: 20},//formatter是指中间展示什么值,{a}表示系列名称,{b}表示数据的名称,{c}是值,然后自己写点啥拼接拼接就好拉
        //label: {formatter: '你gua我\n\n{c}',  fontSize: 0},
        tooltip: {show: true},//鼠标移入后是否展示标签信息,true表示展示,false表示不展示
    }]
};

//这里的myChart就是对应的第四条,现在要把第六条注释对应的option内容推入到div里面去拉!这里是结束
myChart.setOption(option);

}, 500);//定时器结尾
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

15回帖数 6关注人数 6078浏览人数
最后回复于:2022-8-9 16:51

返回顶部 返回列表