103Echarts - K线图(Large Scale Candlestick)

简介: 103Echarts - K线图(Large Scale Candlestick)
效果图

源代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="js/echarts.min.js"></script>
  </head>
  <body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById('main'));
      var option;
      var upColor = '#ec0000';
      var upBorderColor = '#8A0000';
      var downColor = '#00da3c';
      var downBorderColor = '#008F28';
      var dataCount = 2e5;
      var data = generateOHLC(dataCount);
      var option = {
        dataset: {
          source: data
        },
        title: {
          text: 'Data Amount: ' + echarts.format.addCommas(dataCount)
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'line'
          }
        },
        toolbox: {
          feature: {
            dataZoom: {
              yAxisIndex: false
            },
          }
        },
        grid: [{
            left: '10%',
            right: '10%',
            bottom: 200
          },
          {
            left: '10%',
            right: '10%',
            height: 80,
            bottom: 80
          }
        ],
        xAxis: [{
            type: 'category',
            scale: true,
            boundaryGap: false,
            // inverse: true,
            axisLine: {
              onZero: false
            },
            splitLine: {
              show: false
            },
            splitNumber: 20,
            min: 'dataMin',
            max: 'dataMax'
          },
          {
            type: 'category',
            gridIndex: 1,
            scale: true,
            boundaryGap: false,
            axisLine: {
              onZero: false
            },
            axisTick: {
              show: false
            },
            splitLine: {
              show: false
            },
            axisLabel: {
              show: false
            },
            splitNumber: 20,
            min: 'dataMin',
            max: 'dataMax'
          }
        ],
        yAxis: [{
            scale: true,
            splitArea: {
              show: true
            }
          },
          {
            scale: true,
            gridIndex: 1,
            splitNumber: 2,
            axisLabel: {
              show: false
            },
            axisLine: {
              show: false
            },
            axisTick: {
              show: false
            },
            splitLine: {
              show: false
            }
          }
        ],
        dataZoom: [{
            type: 'inside',
            xAxisIndex: [0, 1],
            start: 10,
            end: 100
          },
          {
            show: true,
            xAxisIndex: [0, 1],
            type: 'slider',
            bottom: 10,
            start: 10,
            end: 100,
            handleIcon: 'M10.7,11.9H9.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
            handleSize: '105%'
          }
        ],
        visualMap: {
          show: false,
          seriesIndex: 1,
          dimension: 6,
          pieces: [{
            value: 1,
            color: upColor
          }, {
            value: -1,
            color: downColor
          }]
        },
        series: [{
            type: 'candlestick',
            itemStyle: {
              color: upColor,
              color0: downColor,
              borderColor: upBorderColor,
              borderColor0: downBorderColor
            },
            encode: {
              x: 0,
              y: [1, 4, 3, 2]
            }
          },
          {
            name: 'Volumn',
            type: 'bar',
            xAxisIndex: 1,
            yAxisIndex: 1,
            itemStyle: {
              color: '#7fbe9e'
            },
            large: true,
            encode: {
              x: 0,
              y: 5
            }
          }
        ]
      };
      function generateOHLC(count) {
        var data = [];
        var xValue = +new Date(2011, 0, 1);
        var minute = 60 * 1000;
        var baseValue = Math.random() * 12000;
        var boxVals = new Array(4);
        var dayRange = 12;
        for(var i = 0; i < count; i++) {
          baseValue = baseValue + Math.random() * 20 - 10;
          for(var j = 0; j < 4; j++) {
            boxVals[j] = (Math.random() - 0.5) * dayRange + baseValue;
          }
          boxVals.sort();
          var idxRandom = Math.random();
          var openIdx = Math.round(Math.random() * 3);
          var closeIdx = Math.round(Math.random() * 2);
          if(closeIdx === openIdx) {
            closeIdx++;
          }
          var volumn = boxVals[3] * (1000 + Math.random() * 500);
          // ['open', 'close', 'lowest', 'highest', 'volumn']
          // [1, 4, 3, 2]
          data[i] = [
            echarts.format.formatTime('yyyy-MM-dd\nhh:mm:ss', xValue += minute), +boxVals[openIdx].toFixed(2), // open
            +boxVals[3].toFixed(2), // highest
            +boxVals[0].toFixed(2), // lowest
            +boxVals[closeIdx].toFixed(2), // close
            volumn.toFixed(0),
            getSign(data, i, +boxVals[openIdx], +boxVals[closeIdx], 4) // sign
          ];
        }
        return data;
        function getSign(data, dataIndex, openVal, closeVal, closeDimIdx) {
          var sign;
          if(openVal > closeVal) {
            sign = -1;
          } else if(openVal < closeVal) {
            sign = 1;
          } else {
            sign = dataIndex > 0
              // If close === open, compare with close of last record
              ?
              (data[dataIndex - 1][closeDimIdx] <= closeVal ? 1 : -1)
              // No record of previous, set to be positive
              :
              1;
          }
          return sign;
        }
      }
      myChart.setOption(option);
    </script>
  </body>
</html>
目录
相关文章
|
11月前
102Echarts - K线图(Candlestick Brush)
102Echarts - K线图(Candlestick Brush)
43 0
|
11月前
268Echarts - GL 关系图(GraphGL - Large Internet)
268Echarts - GL 关系图(GraphGL - Large Internet)
98 0
|
11月前
210Echarts - 数据区域缩放(Large scale area chart)
210Echarts - 数据区域缩放(Large scale area chart)
96 0
|
11月前
75Echarts - 散点图(Large Scatter)
75Echarts - 散点图(Large Scatter)
24 0
|
11月前
33Echarts - 柱状图(Large Scale Bar Chart)
33Echarts - 柱状图(Large Scale Bar Chart)
45 0
|
11月前
09Echarts - 折线图(Large scale area chart)
09Echarts - 折线图(Large scale area chart)
56 0
|
1天前
|
Web App开发 数据可视化 前端开发
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
本文介绍了ECharts的基本使用和语法格式,包括如何引入ECharts、创建容器、初始化echarts实例对象、配置option参数和一些基础图表的绘制方法。文章还提供了简单图表绘制和使用图例添加的示例代码,以及对ECharts特性和优势的概述。
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
|
30天前
|
小程序 JavaScript
微信小程序使用echarts图表(ec-canvas)
这篇文章介绍了在微信小程序中使用`ec-canvas`集成echarts图表的方法,包括解决加载时报错的问题、配置图表组件、以及在小程序页面中引入和使用这些图表组件的步骤。
172 1
微信小程序使用echarts图表(ec-canvas)
|
1月前
|
前端开发 数据可视化 JavaScript
Echarts如何实现多图表缩放和自适应?附源码
Echarts如何实现多图表缩放和自适应?附源码
Echarts如何实现多图表缩放和自适应?附源码
|
1月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作

热门文章

最新文章