echarts 日历图calender

1.主要配置
	 var option = {
        visualMap: {	方便控制日历图每个单元的显示样式
        	...
        },
        calendar: {
        	id:'',
			range: '2017'	某一年				
				'2017-02'	某个月
				['2017-01-02', '2017-02-23']	某个区间
				['2017-01', '2017-02']
			cellSize,	单元格宽高
			dayLabel:{	日期相关
				firstDay:0,	从周日开始,1从周一开始
				position:'start'|'end'	星期的位置,在星期轴的开头还是结尾。
				nameMap 	星期显示的效果
					'en'	等同于['S', 'M', 'T', 'W', 'T', 'F', 'S']
					'cn'	等同于['日', '一', '二', '三', '四', '五', '六']
					['S', '一', 'T', '三', '', '五', 'S']	自定义
			},
			monthLabel:{
				nameMap
					'en'	等同于['Jan', 'Feb', 'Mar',...]
					'cn'	等同于['一月', '二月', '三月',...]
					['自定义',...]
			},
			yearLabel:{
				...
			}
        }
    };
	
	多个日历图
		calendar:[{
			top:n,
			...
		},{
			top:m,
			...
		}],
		series: [{
			coordinateSystem: 'calendar',
        	...
		},{
			coordinateSystem: 'calendar',
        	calendarIndex: 1,
        	...
		}]
		
2、日期转换函数
	import * as echarts from 'echarts';
	
	function getVirtulData(year) {
	    year = year || '2017';
	    var date = +echarts.number.parseDate(year + '-01-01');
	    var end = +echarts.number.parseDate(year + '-12-31');
	    var dayTime = 3600 * 24 * 1000;
	    var data = [];
	    for (var time = date; time <= end; time += dayTime) {
	        data.push([
	            echarts.format.formatTime('yyyy-MM-dd', time),
	            Math.floor(Math.random() * 10000)	 每个日期对应的数据value
	        ]);
	    }
	    
	    return data;
	}
	输入年份会返回[["2017-01-01", 8539],["2017-01-02", 3610],...]

3、和热力图结合
		visualMap: {
	        min: 0,
	        max: 10000,
	        type: 'piecewise',
			...
	    },
	    calendar: {
	        range: '2016',
			...
	    },
	    series: {
	        type: 'heatmap',
	        coordinateSystem: 'calendar',
	        data: getVirtulData(2016)
	    }
	    
4、和散点图结合
	 calendar: {
        range: ['2016-01-01', '2016-06-30'],
     },
     series:[{
        type: 'scatter',
        coordinateSystem: 'calendar',
        data: getVirtulData(2016)
     }]
 
 5、和关系图graph结合
 	var graphData = [
	    [
	       '2017-02-01',
	        260
	    ],
	    [
	        '2017-02-04',
	        200
	    ],...
	];
	
	var links = graphData.map(function (item, idx) {
	    return {
	        source: idx,
	        target: idx + 1
	    };
	});
	links.pop();
	
    calendar: {
        range: ['2017-02', '2017-03-31']
    },
    series: [{
    	type: 'graph',
        edgeSymbol: ['none', 'arrow'],
        coordinateSystem: 'calendar',
        links: links,
        data: graphData,
    }]
    
6、日历图中设置自定义内容如(文字)等
	基本思路是通过散点等有坐标系能够直接关联上calendar坐标系的,然后将圆图表样式隐藏,设置自定义样式
	var dateList = [
	    ['2017-1-1', '初四'],
	    ['2017-1-2', '初五'],
	    ...]
	    
	  calendar: [{
        range: '2017-03'
      },
      series:[{
      	type: 'scatter',
        coordinateSystem: 'calendar',
        symbolSize: 1,
        label:{
        	formatter: function (params) {
        		return ...
        	}
        },
        data:dateList
      }]
      
7、和饼图结合
	因为饼图没有坐标系,所以无法直接定位,先通过散点等等有坐标系能够直接关联上calendar坐标系的,然后隐藏样式
	然后遍历散点的数据,通过convertToPixel变成像素坐标后,再往series里添加饼图,通过center来定位饼图到每个格子里
		function getPieSeries(scatterData, chart) {
		    return scatterData.map(function (item, index) {
		        var center = chart.convertToPixel('calendar', item);
		        return {
		            id: index + 'pie',
		            type: 'pie',
		            center: center,
		            data: [...]
		        };
		    });
		}
		
		myChart.setOption({
	        series: getPieSeries(scatterData, myChart)
	    });
		
	    calendar: {
	        range: ['2017-02']
	    },
	    series: [{
	        id: 'label',
	        type: 'scatter',
	        coordinateSystem: 'calendar',
	        symbolSize: 1,
	        data: scatterData
	    }]

效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码示例:
和热力图结合:

function getVirtulData(year) {
    year = year || '2017';
    var date = +echarts.number.parseDate(year + '-01-01');
    var end = +echarts.number.parseDate((+year + 1) + '-01-01');
    var dayTime = 3600 * 24 * 1000;
    var data = [];
    for (var time = date; time < end; time += dayTime) {
        data.push([
            echarts.format.formatTime('yyyy-MM-dd', time),
            Math.floor(Math.random() * 10000)
        ]);
    }
    return data;
}

option = {
    title: {
        top: 30,
        left: 'center',
        text: '2016年某人每天的步数'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 10000,
        type: 'piecewise',
        orient: 'horizontal',
        left: 'center',
        top: 65
    },
    calendar: {
        top: 120,
        left: 30,
        right: 30,
        cellSize: ['auto', 13],
        range: '2016',
        itemStyle: {
            borderWidth: 0.5
        },
        yearLabel: {show: false}
    },
    series: {
        type: 'heatmap',
        coordinateSystem: 'calendar',
        data: getVirtulData(2016)
    }
};

和散点图结合:

function getVirtulData(year) {
    year = year || '2017';
    var date = +echarts.number.parseDate(year + '-01-01');
    var end = +echarts.number.parseDate((+year + 1) + '-01-01');
    var dayTime = 3600 * 24 * 1000;
    var data = [];
    for (var time = date; time < end; time += dayTime) {
        data.push([
            echarts.format.formatTime('yyyy-MM-dd', time),
            Math.floor(Math.random() * 10000)
        ]);
    }
    return data;
}

var data = getVirtulData(2016);

option = {
    backgroundColor: '#404a59',

    title: {
        top: 30,
        text: '2016年某人每天的步数',
        subtext: '数据纯属虚构',
        left: 'center',
        textStyle: {
            color: '#fff'
        }
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        top: '30',
        left: '100',
        data: ['步数', 'Top 12'],
        textStyle: {
            color: '#fff'
        }
    },
    calendar: [{
        top: 100,
        left: 'center',
        range: ['2016-01-01', '2016-06-30'],
        splitLine: {
            show: true,
            lineStyle: {
                color: '#000',
                width: 4,
                type: 'solid'
            }
        },
        yearLabel: {
            formatter: '{start}  1st',
            textStyle: {
                color: '#fff'
            }
        },
        itemStyle: {
            color: '#323c48',
            borderWidth: 1,
            borderColor: '#111'
        }
    }, {
        top: 340,
        left: 'center',
        range: ['2016-07-01', '2016-12-31'],
        splitLine: {
            show: true,
            lineStyle: {
                color: '#000',
                width: 4,
                type: 'solid'
            }
        },
        yearLabel: {
            formatter: '{start}  2nd',
            textStyle: {
                color: '#fff'
            }
        },
        itemStyle: {
            color: '#323c48',
            borderWidth: 1,
            borderColor: '#111'
        }
    }],
    series: [
        {
            name: '步数',
            type: 'scatter',
            coordinateSystem: 'calendar',
            data: data,
            symbolSize: function (val) {
                return val[1] / 500;
            },
            itemStyle: {
                color: '#ddb926'
            }
        },
        {
            name: '步数',
            type: 'scatter',
            coordinateSystem: 'calendar',
            calendarIndex: 1,
            data: data,
            symbolSize: function (val) {
                return val[1] / 500;
            },
            itemStyle: {
                color: '#ddb926'
            }
        },
        {
            name: 'Top 12',
            type: 'effectScatter',
            coordinateSystem: 'calendar',
            calendarIndex: 1,
            data: data.sort(function (a, b) {
                return b[1] - a[1];
            }).slice(0, 12),
            symbolSize: function (val) {
                return val[1] / 500;
            },
            showEffectOn: 'render',
            rippleEffect: {
                brushType: 'stroke'
            },
            hoverAnimation: true,
            itemStyle: {
                color: '#f4e925',
                shadowBlur: 10,
                shadowColor: '#333'
            },
            zlevel: 1
        },
        {
            name: 'Top 12',
            type: 'effectScatter',
            coordinateSystem: 'calendar',
            data: data.sort(function (a, b) {
                return b[1] - a[1];
            }).slice(0, 12),
            symbolSize: function (val) {
                return val[1] / 500;
            },
            showEffectOn: 'render',
            rippleEffect: {
                brushType: 'stroke'
            },
            hoverAnimation: true,
            itemStyle: {
                color: '#f4e925',
                shadowBlur: 10,
                shadowColor: '#333'
            },
            zlevel: 1
        }
    ]
};

和关系图graph结合:

var graphData = [
    [
       '2017-02-01',
        260
    ],
    [
        '2017-02-04',
        200
    ],
    [
        '2017-02-09',
        279
    ],
    [
        '2017-02-13',
        847
    ],
    [
        '2017-02-18',
        241
    ],
    [
        '2017-02-23',
        411
    ],
    [
        '2017-03-14',
        985
    ]
];

var links = graphData.map(function (item, idx) {
    return {
        source: idx,
        target: idx + 1
    };
});
links.pop();

function getVirtulData(year) {
    year = year || '2017';
    var date = +echarts.number.parseDate(year + '-01-01');
    var end = +echarts.number.parseDate((+year + 1) + '-01-01');
    var dayTime = 3600 * 24 * 1000;
    var data = [];
    for (var time = date; time < end; time += dayTime) {
        data.push([
            echarts.format.formatTime('yyyy-MM-dd', time),
            Math.floor(Math.random() * 1000)
        ]);
    }
    return data;
}


option = {
    tooltip: {},
    calendar: {
        top: 'middle',
        left: 'center',
        orient: 'vertical',
        cellSize: 40,
        yearLabel: {
            margin: 50,
            textStyle: {
                fontSize: 30
            }
        },
        dayLabel: {
            firstDay: 1,
            nameMap: 'cn'
        },
        monthLabel: {
            nameMap: 'cn',
            margin: 15,
            fontSize: 20,
            color: '#999'
        },
        range: ['2017-02', '2017-03-31']
    },
    visualMap: {
        min: 0,
        max: 1000,
        type: 'piecewise',
        left: 'center',
        bottom: 20,
        inRange: {
            color: ['#5291FF', '#C7DBFF']
        },
        seriesIndex: [1],
        orient: 'horizontal'
    },
    series: [{
        type: 'graph',
        edgeSymbol: ['none', 'arrow'],
        coordinateSystem: 'calendar',
        links: links,
        symbolSize: 15,
        calendarIndex: 0,
        itemStyle: {
            color: 'yellow',
            shadowBlur: 9,
            shadowOffsetX: 1.5,
            shadowOffsetY: 3,
            shadowColor: '#555'
        },
        lineStyle: {
            color: '#D10E00',
            width: 1,
            opacity: 1
        },
        data: graphData,
        z: 20
    }, {
        type: 'heatmap',
        coordinateSystem: 'calendar',
        data: getVirtulData(2017)
    }]
};

日历图中设置自定义内容如(文字)等:

var dateList = [
    ['2017-1-1', '初四'],
    ['2017-1-2', '初五'],
    ['2017-1-3', '初六'],
    ['2017-1-4', '初七'],
    ['2017-1-5', '初八', '小寒'],
    ['2017-1-6', '初九'],
    ['2017-1-7', '初十'],
    ['2017-1-8', '十一'],
    ['2017-1-9', '十二'],
    ['2017-1-10', '十三'],
    ['2017-1-11', '十四'],
    ['2017-1-12', '十五'],
    ['2017-1-13', '十六'],
    ['2017-1-14', '十七'],
    ['2017-1-15', '十八'],
    ['2017-1-16', '十九'],
    ['2017-1-17', '二十'],
    ['2017-1-18', '廿一'],
    ['2017-1-19', '廿二'],
    ['2017-1-20', '廿三', '大寒'],
    ['2017-1-21', '廿四'],
    ['2017-1-22', '廿五'],
    ['2017-1-23', '廿六'],
    ['2017-1-24', '廿七'],
    ['2017-1-25', '廿八'],
    ['2017-1-26', '廿九'],
    ['2017-1-27', '三十'],
    ['2017-1-28', '正月'],
    ['2017-1-29', '初二'],
    ['2017-1-30', '初三'],
    ['2017-1-31', '初四'],
    ['2017-2-1', '初五'],
    ['2017-2-2', '初六'],
    ['2017-2-3', '初七', '立春'],
    ['2017-2-4', '初八'],
    ['2017-2-5', '初九'],
    ['2017-2-6', '初十'],
    ['2017-2-7', '十一'],
    ['2017-2-8', '十二'],
    ['2017-2-9', '十三'],
    ['2017-2-10', '十四'],
    ['2017-2-11', '十五'],
    ['2017-2-12', '十六'],
    ['2017-2-13', '十七'],
    ['2017-2-14', '十八'],
    ['2017-2-15', '十九'],
    ['2017-2-16', '二十'],
    ['2017-2-17', '廿一'],
    ['2017-2-18', '廿二', '雨水'],
    ['2017-2-19', '廿三'],
    ['2017-2-20', '廿四'],
    ['2017-2-21', '廿五'],
    ['2017-2-22', '廿六'],
    ['2017-2-23', '廿七'],
    ['2017-2-24', '廿八'],
    ['2017-2-25', '廿九'],
    ['2017-2-26', '二月'],
    ['2017-2-27', '初二'],
    ['2017-2-28', '初三'],
    ['2017-3-1', '初四'],
    ['2017-3-2', '初五'],
    ['2017-3-3', '初六'],
    ['2017-3-4', '初七'],
    ['2017-3-5', '初八', '驚蟄'],
    ['2017-3-6', '初九'],
    ['2017-3-7', '初十'],
    ['2017-3-8', '十一'],
    ['2017-3-9', '十二'],
    ['2017-3-10', '十三'],
    ['2017-3-11', '十四'],
    ['2017-3-12', '十五'],
    ['2017-3-13', '十六'],
    ['2017-3-14', '十七'],
    ['2017-3-15', '十八'],
    ['2017-3-16', '十九'],
    ['2017-3-17', '二十'],
    ['2017-3-18', '廿一'],
    ['2017-3-19', '廿二'],
    ['2017-3-20', '廿三', '春分'],
    ['2017-3-21', '廿四'],
    ['2017-3-22', '廿五'],
    ['2017-3-23', '廿六'],
    ['2017-3-24', '廿七'],
    ['2017-3-25', '廿八'],
    ['2017-3-26', '廿九'],
    ['2017-3-27', '三十'],
    ['2017-3-28', '三月'],
    ['2017-3-29', '初二'],
    ['2017-3-30', '初三'],
    ['2017-3-31', '初四'],
    ['2017-4-1', '初五'],
    ['2017-4-2', '初六'],
    ['2017-4-3', '初七'],
    ['2017-4-4', '初八', '清明'],
    ['2017-4-5', '初九'],
    ['2017-4-6', '初十'],
    ['2017-4-7', '十一'],
    ['2017-4-8', '十二'],
    ['2017-4-9', '十三'],
    ['2017-4-10', '十四'],
    ['2017-4-11', '十五'],
    ['2017-4-12', '十六'],
    ['2017-4-13', '十七'],
    ['2017-4-14', '十八'],
    ['2017-4-15', '十九'],
    ['2017-4-16', '二十'],
    ['2017-4-17', '廿一'],
    ['2017-4-18', '廿二'],
    ['2017-4-19', '廿三'],
    ['2017-4-20', '廿四', '穀雨'],
    ['2017-4-21', '廿五'],
    ['2017-4-22', '廿六'],
    ['2017-4-23', '廿七'],
    ['2017-4-24', '廿八'],
    ['2017-4-25', '廿九'],
    ['2017-4-26', '四月'],
    ['2017-4-27', '初二'],
    ['2017-4-28', '初三'],
    ['2017-4-29', '初四'],
    ['2017-4-30', '初五'],
    ['2017-5-1', '初六'],
    ['2017-5-2', '初七'],
    ['2017-5-3', '初八'],
    ['2017-5-4', '初九'],
    ['2017-5-5', '初十', '立夏'],
    ['2017-5-6', '十一'],
    ['2017-5-7', '十二'],
    ['2017-5-8', '十三'],
    ['2017-5-9', '十四'],
    ['2017-5-10', '十五'],
    ['2017-5-11', '十六'],
    ['2017-5-12', '十七'],
    ['2017-5-13', '十八'],
    ['2017-5-14', '十九'],
    ['2017-5-15', '二十'],
    ['2017-5-16', '廿一'],
    ['2017-5-17', '廿二'],
    ['2017-5-18', '廿三'],
    ['2017-5-19', '廿四'],
    ['2017-5-20', '廿五'],
    ['2017-5-21', '廿六', '小滿'],
    ['2017-5-22', '廿七'],
    ['2017-5-23', '廿八'],
    ['2017-5-24', '廿九'],
    ['2017-5-25', '三十'],
    ['2017-5-26', '五月'],
    ['2017-5-27', '初二'],
    ['2017-5-28', '初三'],
    ['2017-5-29', '初四'],
    ['2017-5-30', '初五'],
    ['2017-5-31', '初六'],
    ['2017-6-1', '初七'],
    ['2017-6-2', '初八'],
    ['2017-6-3', '初九'],
    ['2017-6-4', '初十'],
    ['2017-6-5', '十一', '芒種'],
    ['2017-6-6', '十二'],
    ['2017-6-7', '十三'],
    ['2017-6-8', '十四'],
    ['2017-6-9', '十五'],
    ['2017-6-10', '十六'],
    ['2017-6-11', '十七'],
    ['2017-6-12', '十八'],
    ['2017-6-13', '十九'],
    ['2017-6-14', '二十'],
    ['2017-6-15', '廿一'],
    ['2017-6-16', '廿二'],
    ['2017-6-17', '廿三'],
    ['2017-6-18', '廿四'],
    ['2017-6-19', '廿五'],
    ['2017-6-20', '廿六'],
    ['2017-6-21', '廿七', '夏至'],
    ['2017-6-22', '廿八'],
    ['2017-6-23', '廿九'],
    ['2017-6-24', '六月'],
    ['2017-6-25', '初二'],
    ['2017-6-26', '初三'],
    ['2017-6-27', '初四'],
    ['2017-6-28', '初五'],
    ['2017-6-29', '初六'],
    ['2017-6-30', '初七'],
    ['2017-7-1', '初八'],
    ['2017-7-2', '初九'],
    ['2017-7-3', '初十'],
    ['2017-7-4', '十一'],
    ['2017-7-5', '十二'],
    ['2017-7-6', '十三'],
    ['2017-7-7', '十四', '小暑'],
    ['2017-7-8', '十五'],
    ['2017-7-9', '十六'],
    ['2017-7-10', '十七'],
    ['2017-7-11', '十八'],
    ['2017-7-12', '十九'],
    ['2017-7-13', '二十'],
    ['2017-7-14', '廿一'],
    ['2017-7-15', '廿二'],
    ['2017-7-16', '廿三'],
    ['2017-7-17', '廿四'],
    ['2017-7-18', '廿五'],
    ['2017-7-19', '廿六'],
    ['2017-7-20', '廿七'],
    ['2017-7-21', '廿八'],
    ['2017-7-22', '廿九', '大暑'],
    ['2017-7-23', '閏六',],
    ['2017-7-24', '初二'],
    ['2017-7-25', '初三'],
    ['2017-7-26', '初四'],
    ['2017-7-27', '初五'],
    ['2017-7-28', '初六'],
    ['2017-7-29', '初七'],
    ['2017-7-30', '初八'],
    ['2017-7-31', '初九'],
    ['2017-8-1', '初十'],
    ['2017-8-2', '十一'],
    ['2017-8-3', '十二'],
    ['2017-8-4', '十三'],
    ['2017-8-5', '十四'],
    ['2017-8-6', '十五'],
    ['2017-8-7', '十六', '立秋'],
    ['2017-8-8', '十七'],
    ['2017-8-9', '十八'],
    ['2017-8-10', '十九'],
    ['2017-8-11', '二十'],
    ['2017-8-12', '廿一'],
    ['2017-8-13', '廿二'],
    ['2017-8-14', '廿三'],
    ['2017-8-15', '廿四'],
    ['2017-8-16', '廿五'],
    ['2017-8-17', '廿六'],
    ['2017-8-18', '廿七'],
    ['2017-8-19', '廿八'],
    ['2017-8-20', '廿九'],
    ['2017-8-21', '三十'],
    ['2017-8-22', '七月'],
    ['2017-8-23', '初二', '處暑'],
    ['2017-8-24', '初三'],
    ['2017-8-25', '初四'],
    ['2017-8-26', '初五'],
    ['2017-8-27', '初六'],
    ['2017-8-28', '初七'],
    ['2017-8-29', '初八'],
    ['2017-8-30', '初九'],
    ['2017-8-31', '初十'],
    ['2017-9-1', '十一'],
    ['2017-9-2', '十二'],
    ['2017-9-3', '十三'],
    ['2017-9-4', '十四'],
    ['2017-9-5', '十五'],
    ['2017-9-6', '十六'],
    ['2017-9-7', '十七', '白露'],
    ['2017-9-8', '十八'],
    ['2017-9-9', '十九'],
    ['2017-9-10', '二十'],
    ['2017-9-11', '廿一'],
    ['2017-9-12', '廿二'],
    ['2017-9-13', '廿三'],
    ['2017-9-14', '廿四'],
    ['2017-9-15', '廿五'],
    ['2017-9-16', '廿六'],
    ['2017-9-17', '廿七'],
    ['2017-9-18', '廿八'],
    ['2017-9-19', '廿九'],
    ['2017-9-20', '八月'],
    ['2017-9-21', '初二'],
    ['2017-9-22', '初三'],
    ['2017-9-23', '初四', '秋分'],
    ['2017-9-24', '初五'],
    ['2017-9-25', '初六'],
    ['2017-9-26', '初七'],
    ['2017-9-27', '初八'],
    ['2017-9-28', '初九'],
    ['2017-9-29', '初十'],
    ['2017-9-30', '十一'],
    ['2017-10-1', '十二'],
    ['2017-10-2', '十三'],
    ['2017-10-3', '十四'],
    ['2017-10-4', '十五'],
    ['2017-10-5', '十六'],
    ['2017-10-6', '十七'],
    ['2017-10-7', '十八'],
    ['2017-10-8', '十九', '寒露'],
    ['2017-10-9', '二十'],
    ['2017-10-10', '廿一'],
    ['2017-10-11', '廿二'],
    ['2017-10-12', '廿三'],
    ['2017-10-13', '廿四'],
    ['2017-10-14', '廿五'],
    ['2017-10-15', '廿六'],
    ['2017-10-16', '廿七'],
    ['2017-10-17', '廿八'],
    ['2017-10-18', '廿九'],
    ['2017-10-19', '三十'],
    ['2017-10-20', '九月'],
    ['2017-10-21', '初二'],
    ['2017-10-22', '初三'],
    ['2017-10-23', '初四', '霜降'],
    ['2017-10-24', '初五'],
    ['2017-10-25', '初六'],
    ['2017-10-26', '初七'],
    ['2017-10-27', '初八'],
    ['2017-10-28', '初九'],
    ['2017-10-29', '初十'],
    ['2017-10-30', '十一'],
    ['2017-10-31', '十二'],
    ['2017-11-1', '十三'],
    ['2017-11-2', '十四'],
    ['2017-11-3', '十五'],
    ['2017-11-4', '十六'],
    ['2017-11-5', '十七'],
    ['2017-11-6', '十八'],
    ['2017-11-7', '十九', '立冬'],
    ['2017-11-8', '二十'],
    ['2017-11-9', '廿一'],
    ['2017-11-10', '廿二'],
    ['2017-11-11', '廿三'],
    ['2017-11-12', '廿四'],
    ['2017-11-13', '廿五'],
    ['2017-11-14', '廿六'],
    ['2017-11-15', '廿七'],
    ['2017-11-16', '廿八'],
    ['2017-11-17', '廿九'],
    ['2017-11-18', '十月'],
    ['2017-11-19', '初二'],
    ['2017-11-20', '初三'],
    ['2017-11-21', '初四'],
    ['2017-11-22', '初五', '小雪'],
    ['2017-11-23', '初六'],
    ['2017-11-24', '初七'],
    ['2017-11-25', '初八'],
    ['2017-11-26', '初九'],
    ['2017-11-27', '初十'],
    ['2017-11-28', '十一'],
    ['2017-11-29', '十二'],
    ['2017-11-30', '十三'],
    ['2017-12-1', '十四'],
    ['2017-12-2', '十五'],
    ['2017-12-3', '十六'],
    ['2017-12-4', '十七'],
    ['2017-12-5', '十八'],
    ['2017-12-6', '十九'],
    ['2017-12-7', '二十', '大雪'],
    ['2017-12-8', '廿一'],
    ['2017-12-9', '廿二'],
    ['2017-12-10', '廿三'],
    ['2017-12-11', '廿四'],
    ['2017-12-12', '廿五'],
    ['2017-12-13', '廿六'],
    ['2017-12-14', '廿七'],
    ['2017-12-15', '廿八'],
    ['2017-12-16', '廿九'],
    ['2017-12-17', '三十'],
    ['2017-12-18', '十一月'],
    ['2017-12-19', '初二'],
    ['2017-12-20', '初三'],
    ['2017-12-21', '初四'],
    ['2017-12-22', '初五', '冬至'],
    ['2017-12-23', '初六'],
    ['2017-12-24', '初七'],
    ['2017-12-25', '初八'],
    ['2017-12-26', '初九'],
    ['2017-12-27', '初十'],
    ['2017-12-28', '十一'],
    ['2017-12-29', '十二'],
    ['2017-12-30', '十三'],
    ['2017-12-31', '十四']
];

var heatmapData = [];
var lunarData = [];
for (var i = 0; i < dateList.length; i++) {
    heatmapData.push([
        dateList[i][0],
        Math.random() * 300
    ]);
    lunarData.push([
        dateList[i][0],
        1,
        dateList[i][1],
        dateList[i][2]
    ]);
}


option = {
    tooltip: {
        formatter: function (params) {
            return '降雨量: ' + params.value[1].toFixed(2);
        }
    },

    visualMap: {
        show: false,
        min: 0,
        max: 300,
        calculable: true,
        seriesIndex: [2],
        orient: 'horizontal',
        left: 'center',
        bottom: 20,
        inRange: {
            color: ['#e0ffff', '#006edd'],
            opacity: 0.3
        },
        controller: {
            inRange: {
                opacity: 0.5
            }
        }
    },

    calendar: [{
        left: 'center',
        top: 'middle',
        cellSize: [70, 70],
        yearLabel: {show: false},
        orient: 'vertical',
        dayLabel: {
            firstDay: 1,
            nameMap: 'cn'
        },
        monthLabel: {
            show: false
        },
        range: '2017-03'
    }],

    series: [{
        type: 'scatter',
        coordinateSystem: 'calendar',
        symbolSize: 1,
        label: {
            show: true,
            formatter: function (params) {
                var d = echarts.number.parseDate(params.value[0]);
                return d.getDate() + '\n\n' + params.value[2] + '\n\n';
            },
            color: '#000'
        },
        data: lunarData
    }, {
        type: 'scatter',
        coordinateSystem: 'calendar',
        symbolSize: 1,
        label: {
            show: true,
            formatter: function (params) {
                return '\n\n\n' + (params.value[3] || '');
            },
            fontSize: 14,
            fontWeight: 700,
            color: '#a00'
        },
        data: lunarData
    }, {
        name: '降雨量',
        type: 'heatmap',
        coordinateSystem: 'calendar',
        data: heatmapData
    }]
};

和饼图结合:

var cellSize = [80, 80];
var pieRadius = 30;

function getVirtulData() {
    var date = +echarts.number.parseDate('2017-02-01');
    var end = +echarts.number.parseDate('2017-03-01');
    var dayTime = 3600 * 24 * 1000;
    var data = [];
    for (var time = date; time < end; time += dayTime) {
        data.push([
            echarts.format.formatTime('yyyy-MM-dd', time),
            Math.floor(Math.random() * 10000)
        ]);
    }
    return data;
}

function getPieSeries(scatterData, chart) {
    return scatterData.map(function (item, index) {
        var center = chart.convertToPixel('calendar', item);
        return {
            id: index + 'pie',
            type: 'pie',
            center: center,
            label: {
                normal: {
                    formatter: '{c}',
                    position: 'inside'
                }
            },
            radius: pieRadius,
            data: [
                {name: '工作', value: Math.round(Math.random() * 24)},
                {name: '娱乐', value: Math.round(Math.random() * 24)},
                {name: '睡觉', value: Math.round(Math.random() * 24)}
            ]
        };
    });
}

function getPieSeriesUpdate(scatterData, chart) {
    return scatterData.map(function (item, index) {
        var center = chart.convertToPixel('calendar', item);
        return {
            id: index + 'pie',
            center: center
        };
    });
}

var scatterData = getVirtulData();

option = {
    tooltip : {},
    legend: {
        data: ['工作', '娱乐', '睡觉'],
        bottom: 20
    },
    calendar: {
        top: 'middle',
        left: 'center',
        orient: 'vertical',
        cellSize: cellSize,
        yearLabel: {
            show: false,
            fontSize: 30
        },
        dayLabel: {
            margin: 20,
            firstDay: 1,
            nameMap: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
        },
        monthLabel: {
            show: false
        },
        range: ['2017-02']
    },
    series: [{
        id: 'label',
        type: 'scatter',
        coordinateSystem: 'calendar',
        symbolSize: 1,
        label: {
            show: true,
            formatter: function (params) {
                return echarts.format.formatTime('dd', params.value[0]);
            },
            offset: [-cellSize[0] / 2 + 10, -cellSize[1] / 2 + 10],
            fontSize: 14
        },
        data: scatterData
    }]
};

var pieInitialized;
setTimeout(function () {
    pieInitialized = true;
    myChart.setOption({
        series: getPieSeries(scatterData, myChart)
    });
}, 10);

app.onresize = function () {
    if (pieInitialized) {
        myChart.setOption({
            series: getPieSeriesUpdate(scatterData, myChart)
        });
    }
};
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值