vue组建之——模拟K线数据

子组建:


<template>

  <div class='chart_cross'>

    <div ref="crossEchart" class="chart"></div>

  </div>

</template>

<script>

  // Echart图表

  import Echartfrom 'echarts'

  // VUEX

  import {mapState} from 'vuex'

  // 数组处理

  import _ from 'lodash'

  // Chart假数据

  const legendData = ['当天', '>2min', '1min-2min', '10s-1min', '<10s'];

  //  Chart_Grid配置文件

  const gridConfig = {

    left: '4%',

    right: '3%',

    bottom: '20%'

  };

  // 图表缩放探针配置(X/Y轴)

  const dataZoomConfig = [

    {type: 'inside', start: 50, end: 100},

    {show: true, type: 'slider', y: '90%', start: 50, end: 100}

]

  // Chart 颜色配置

  const upColor = '#ec0000';

  const upBorderColor = '#8A0000';

  const downColor = '#00da3c';

  const downBorderColor = '#008F28';

  //

  const chartDataArray = [

        ['2018/12/1', 224,202,123,306],

        ['2018/12/2', 360,232,232,65],

        ['2018/12/3', 204,386,323,402],

        ['2018/12/4', 229,235,654,204],

        ['2018/12/5', 138,245,534,504],

        ['2018/12/6', 197,43,423,324],

        ['2018/12/7', 263,824,124,503],

        ['2018/12/8', 235,234,523,65],

        ['2018/12/9', 223,156,234,424],

        ['2018/12/10', 258,210,654,42],

        ['2018/12/11', 297,324,234,53],

        ['2018/12/12', 290,312,534,76],

        ['2018/12/13', 316,341,654,76],

        ['2018/12/14', 231,299,235,76],

        ['2018/12/15', 357,312,876,65],

        ['2018/12/16', 876,268,234,42],

        ['2018/12/17', 296,312,342,24],

        ['2018/12/18', 426,387,24,42],

        ['2018/12/19', 246,377,543,32],

        ['2018/12/20', 190,367,567,65],

        ['2018/12/21', 193,356,547,34],

        ['2018/12/22', 215,325,125,43],

        ['2018/12/23', 204,245,85,27],

        ['2018/12/24', 252,245,234,24],

        ['2018/12/25', 235,65,237,54],

        ['2018/12/26', 537,266,273,54],

        ['2018/12/27', 634,245,256,24],

        ['2018/12/28', 215,422,423,25],

        ['2018/12/29', 254,234,234,63],

        ['2018/12/30', 297,457,4,35],

        ['2018/12/31', 230,236,54,453]

]

  // 数据切割(每天)

  const splitData = (rawData) =>{

    let categoryData = [];

    let values = [];

    _.forEach(rawData, item=>{

      categoryData.push(item.splice(0, 1)[0]);

      values.push(item)

})

    return {

      categoryData: categoryData,

      values: values

    };

  };

  const chartData = splitData(chartDataArray);

  // 数据切割(自定义条件)

  const calculateMA = (dayCount) =>{

    let result = [];

    for (let i = 0; i < chartData.values.length; i++) {

      if (i < dayCount) {

        result.push('-');

continue;

      }

      let sum = 0;

      // 计算平均值

      for (let j = 0; j < dayCount; j++) {

        sum += chartData.values[i - j][1];

      }

      result.push(sum / dayCount);

    }

    return result;

  }

  export default {

    // 通话次数趋势K线图

    title: '',

    name: 'login',

    computed: {

      ...mapState({

        // chartData: state => state.vux.chartData

      })

    },

    props: {},

    // 组建刷新

    inject: ['reload'],

    // 挂在组建

    components: {},

    data() {

      return {

        chrossData: []

}

    },

    // 初始化记载

    created() {

      // 先处理图表数据

      let vue = this;

    },

    // DOM加载完毕执行操作

    mounted() {

      let vue = this;

      vue.initChart();

    },

    // 事件处理

    methods: {

      // 初始化Chart

      initChart() {

        let vue = this;

        vue.chart= Echart.init(vue.$refs.crossEchart);

        vue.chart.setOption({

          tooltip: {

            trigger: 'axis',

            axisPointer: {

              type: 'cross'

            }

          },

          legend: {

            data: legendData

          },

          grid: gridConfig,

          xAxis: {

            type: 'category',

            data: chartData.categoryData,

            scale: true,

            boundaryGap: false,

            axisLine: {onZero: false},

            splitLine: {show: false},

            splitNumber: 20,

            min: 'dataMin',

            max: 'dataMax'

          },

          yAxis: {

            scale: true,

            splitArea: {

              show: true

            }

          },

          dataZoom: dataZoomConfig,

          series: [{

              name: '当天',

              type: 'candlestick',

              data: chartData.values,

              itemStyle: {

                normal: {

                  color: upColor,

                  color0: downColor,

                  borderColor: upBorderColor,

                  borderColor0: downBorderColor

                }

}

          }, {

            name: '>2min',

            type: 'line',

            data: calculateMA(5),

            smooth: true,

            lineStyle: {

              normal: {opacity: 0.5}

}

          }, {

            name: '1min-2min',

            type: 'line',

            data: calculateMA(10),

            smooth: true,

            lineStyle: {

              normal: {opacity: 0.5}

}

          }, {

            name: '10s-1min',

            type: 'line',

            data: calculateMA(15),

            smooth: true,

            lineStyle: {

              normal: {opacity: 0.5}

}

          }, {

            name: '<10s',

            type: 'line',

            data: calculateMA(20),

            smooth: true,

            lineStyle: {

              normal: {opacity: 0.5}

}

}]

})

      },

      // 图表数据填充

      setChartOptions() {

        let vue = this;

      }

    },

    // 离开路由的操作

    destroyed() {

}

}

</script>

<style scoped lang='less'>

  .chart_cross {

    width:100%;

    height:250px;

  }

  .chart{width:100%;height:250px}

</style>


父组建:     <chartCross></chartCross>



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容