zoukankan      html  css  js  c++  java
  • echart 绘制k线图

    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
            <script src="https://cdn.bootcss.com/echarts/4.6.0/echarts.min.js"></script>
            <title>echart.html</title>
        </head>
        <body>
            <div id="main" style=" 100px;height:40px;border: 1px dashed #000;margin: 20px;"></div>
            <script type="text/javascript">
                // 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                //generateOHLC 产生随机数组[日期,开盘,最高,最低,关盘],不用去研究;
                var data = generateOHLC(2000);
                var option = {
                    dataset: {
                        source: data
                    },
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'line'
                        }
                    },
                    grid: [
                        {
                            left: 0,
                            right: 0,
                            top: 0,
                            bottom:0
                        }
                    ],
                    xAxis: [
                        {   
                            show:false,
                            type: 'category',
                            scale: true,
                            boundaryGap: false,
                            splitNumber: 20,
                            min: 'dataMin',
                            max: 'dataMax'
                        }
                    ],
                    yAxis: [
                        {   show:false,
                            scale: true
                        }
                    ],
                    series: [
                        {
                            type: 'candlestick',
                            itemStyle: {
                                color: '#00B2D9',
                                color0: '#00B2D9',
                                borderColor: '#00B2D9',
                                borderColor0: '#00B2D9'
                            },
                            //此处0位数组的第一位即第一维度展示在x轴上
                            //type: 'candlestick'默认的维度是0-'date', 1-'open', 2-'close', 3-'highest', 4-'lowest'
                            encode: {
                                x: 0,
                                //type: 'candlestick' 的y必须为4个否则报错;
                                //这里的排序针对tooltip的展示,当鼠标放置在图上,展示顺序的改变,并不影响k线图的展示
                                //若只想展示open,close,则设置为[1,2,1,2]
                                //[1,4,3,2]表示tooltip弹框先展示open,再展示lowest,再展示highest,最后close
                                y: [1,4,3,2]
                            }
                        }
                    ]
                };
            function generateOHLC(count) {
                console.log(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 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']
                    // [1, 4, 3, 2]
                    data[i] = [
                        echarts.format.formatTime('yyyy-MM-dd
    hh:mm:ss', xValue += minute),
                        +boxVals[openIdx].toFixed(2), // open
                        +boxVals[3].toFixed(2), // highest
                        +boxVals[0].toFixed(2), // lowest
                        +boxVals[closeIdx].toFixed(2)  // close
                    ];
                }
                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
                            ? (data[dataIndex - 1][closeDimIdx] <= closeVal ? 1 : -1)
                            : 1;
                    }
    
                    return sign;
                }
            }
                myChart.setOption(option);
            </script>
        </body>
    </html>
  • 相关阅读:
    洛谷 P3808 【模板】AC自动机(简单版) 题解
    O3优化模板
    洛谷 P3909 异或之积 题解
    洛谷 P3870 [TJOI2009]开关 题解
    洛谷 P1891 疯狂LCM 题解
    洛谷 P5221 Product 题解
    洛谷 P2568 GCD 题解
    洛谷 P5639 【CSGRound2】守序者的尊严 题解
    扩展kmp板子
    [JZOJ3167] 【GDOI2013模拟3】查税
  • 原文地址:https://www.cnblogs.com/changyaoself/p/12462354.html
Copyright © 2011-2022 走看看