echarts 日历图

下定决心,好好过一天 ~
在这里插入图片描述



var app = {};

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;

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'); //日期结束
    console.log(date)
    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)
        ]);
    }
    console.log(data)
    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)
        });
    }
};

option && myChart.setOption(option);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!是的,ECharts中可以将日历和散点进行搭配展示。具体实现方式如下: 首先需要引入日历和散点的组件: ```javascript // 引入日历组件 import 'echarts/lib/component/calendar'; // 引入散点组件 import 'echarts/lib/chart/scatter'; ``` 然后需要在ECharts实例中配置日历和散点的相关参数。以下代码演示了如何配置: ```javascript option = { // 配置日历 calendar: { top: 50, left: 'center', orient: 'vertical', yearLabel: { fontSize: 30 }, dayLabel: { nameMap: 'cn' }, monthLabel: { nameMap: 'cn', fontSize: 20 }, range: ['2022-01-01', '2022-12-31'] }, // 配置散点 series: { type: 'scatter', data: [ [new Date(2022, 0, 1), 10], [new Date(2022, 0, 15), 20], [new Date(2022, 1, 1), 15], [new Date(2022, 1, 15), 25], [new Date(2022, 2, 1), 30], [new Date(2022, 2, 15), 35], [new Date(2022, 3, 1), 40], [new Date(2022, 3, 15), 45], [new Date(2022, 4, 1), 50], [new Date(2022, 4, 15), 55], [new Date(2022, 5, 1), 60], [new Date(2022, 5, 15), 65], [new Date(2022, 6, 1), 70], [new Date(2022, 6, 15), 75], [new Date(2022, 7, 1), 80], [new Date(2022, 7, 15), 85], [new Date(2022, 8, 1), 90], [new Date(2022, 8, 15), 95], [new Date(2022, 9, 1), 100], [new Date(2022, 9, 15), 105], [new Date(2022, 10, 1), 110], [new Date(2022, 10, 15), 115], [new Date(2022, 11, 1), 120], [new Date(2022, 11, 15), 125], ], symbolSize: 15 } }; ``` 以上配置中,日历的参数包括顶部距离(top)、左侧距离(left)、纵向排列(orient)、年份标签样式(yearLabel)、日期标签样式(dayLabel)、月份标签样式(monthLabel)和日期范围(range)。散点的参数包括表类型(type)、数据(data)和符号大小(symbolSize)。 最后,调用ECharts实例的setOption方法将配置项应用于表中即可: ```javascript myChart.setOption(option); ``` 希望这些信息能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值