官网很多列子有时候少数据就不知道要做出效果只需加那些配置,多余的去除后又容易报错,下面来看一下怎么做的
先看效果如下:
最主要需要注意的地方就是:
1、grid,xAxis,yAxis,series都要各自设置蜡烛图的成交量的柱状图的,缺一不可,需要写这2个类型的。 2、要使下面成交量的柱状图与上面蜡烛图的颜色一致需要设置visualMap视觉映射组。 3、要修改划过显示的为中文或者不是默认的字需要修改formatter,
4、tooltip里设置formatter要与grid和xAxis等在同一级,放在series里设置是不起作用的
html如下
<div id="main" style="width: 1200px;height: 500px;"></div>
script如下
var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); var upColor = '#ec0000';//红涨 var downColor = '#00da3c';//绿跌 var dataTime=["2004-01-02", "2004-01-05","2004-01-06", "2004-01-07", "2004-01-08","2004-01-09", "2004-01-12", "2004-01-13", "2004-01-14", "2004-01-15",];//时间 var dataMes=[//蜡烛图数据 [ 10452.74, 10409.85, 10367.41, 10554.96 ], [ 10411.85, 10544.07, 10411.85, 10575.92 ], [ 10543.85, 10538.66, 10454.37, 10584.07 ], [ 10535.46, 10529.03, 10432, 10587.55 ], [ 10530.07, 10592.44, 10480.59, 10651.99 ], [ 10589.25, 10458.89, 10420.52, 10603.48 ], [ 10461.55, 10485.18, 10389.85, 10543.03 ], [ 10485.18, 10427.18, 10341.19, 10539.25 ], [ 10428.67, 10538.37, 10426.89, 10573.85 ], [ 10534.52, 10553.85, 10454.52, 10639.03 ], ] var volumeNum=[ 168890000,221290000,191460000, 225490000,237770000, 223250000,197960000,197310000,186280000,260090000];//交易量 var volumeData=[]//交易量添加颜色判断 for (var i = 0; i < dataMes.length; i++) { //console.log("开盘价"+dataMes[i][0]) //console.log("收盘价"+dataMes[i][1]) volumeData.push([dataTime[i], volumeNum[i], dataMes[i][0] > dataMes[i][1] ? 1 : -1]); //第一个代表时间,第二个代表成交量的值,第三个判断颜色1为绿色-1为红色 } var option; option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross', link: {xAxisIndex: 'all'},//上下划过分开展示还是一起展示 }, textStyle: { color: '#000' }, formatter: function (params) {//修改鼠标划过显示为中文 if(params[0].componentSubType=="candlestick"){//先划过蜡烛图 var params1 = params[0];//开盘收盘最低最高数据汇总 var params2 = params[1].data[1];//成交量数据 }else if(params[0].componentSubType=="bar"){//先划过成交量 var params1 = params[1];//开盘收盘最低最高数据汇总 var params2 = params[0].data[1];//成交量数据 } var currentItemData = params1.data;//k线数据 return params1.name + '<br>' + '开盘价:' + currentItemData[1] + '<br>' + '收盘价:' + currentItemData[2] + '<br>' + '最低价:' + currentItemData[3] + '<br>' + '最高价:' + currentItemData[4] + '<br>' + '成交量:' + params2 } // extraCssText: 'width: 170px' }, axisPointer: { link: {xAxisIndex: 'all'},//整体划过还是单个划过 label: { backgroundColor: '#777' } }, visualMap: {//视觉映射组,就是将数据映射到视觉元素 show: false, seriesIndex: 1,//指定取哪个系列的数据,第几个图形的数据,从0开始,1代表的是成交量的柱状图 pieces: [{//自定义『分段式视觉映射组件』的每一段的范围,以及每一段的文字,以及每一段的特别的样式 value: 1,//value值为1则用downColor颜色的样式 color: downColor }, { value: -1, color: upColor }] }, grid: [ {//蜡烛图的位置 left: '10%', right: '8%', height: '50%' }, {//成交量柱状图的位置 left: '10%', right: '8%', top: '63%', height: '16%' } ], xAxis: [ {//蜡烛图的设置 type: 'category', data: dataTime, scale: true, //boundaryGap: false, axisLine: {onZero: false}, splitLine: {show: false}, splitNumber: 20, min: 'dataMin', max: 'dataMax', axisPointer: { z: 100 }, }, {//成交量柱状图的设置 type: 'category', gridIndex: 1, data: dataTime, 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} } ], series: [{//蜡烛图的设置 type: 'candlestick', data: dataMes, barWidth : 30,//图形的宽度 itemStyle: { color: upColor, color0: downColor, borderColor: null, borderColor0: null }, }, {//成交量柱状图的设置 name: 'Volume', type: 'bar', barWidth : 30,//柱状图的宽度 xAxisIndex: 1, yAxisIndex: 1, data: volumeData } ] }; option && myChart.setOption(option);
如有其他需要可以查看官网的例子地址如下:https://echarts.apache.org/examples/zh/editor.html?c=candlestick-brush