vue echarts日历散点图

该文展示了如何在项目中按需引入ECharts库的特定组件,如CalendarComponent、TooltipComponent和EffectScatterChart。通过示例代码,配置了日历图表的样式,创建了一个基于日历的动态散点图,并提供了数据和链接,以实现特定的数据可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:

引入echarts

npm install echarts --save

这里是按需进行引入echarts的组件

import * as echarts from 'echarts/core';
import { CalendarComponent, TooltipComponent } from 'echarts/components';
import { EffectScatterChart } from 'echarts/charts';
import { UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';

echarts.use([
  CalendarComponent,
  TooltipComponent,
  EffectScatterChart,
  CanvasRenderer,
  UniversalTransition
]);

代码

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

const 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-02-27', 985]
];
const links = graphData.map(function (item, idx) {
  return {
    source: idx,
    target: idx + 1
  };
});
links.pop();
option = {
  tooltip: {
    position: 'top'
  },
  visualMap: [],
  calendar: [
    {
      splitLine: {
        show: true,
        lineStyle: {
          color: '#fff' //边框颜色
        }
      },
      itemStyle: {
        color: '#100C29', //背景色
        borderType: 'solid'
      },
      orient: 'vertical',
      yearLabel: {
        margin: 10
      },
      //标题'年'
      monthLabel: {
        nameMap: 'cn',
        margin: 10
      },
      dayLabel: {
        firstDay: 1,
        nameMap: ['日', '一', '二', '三', '四', '五', '六'],
        margin: 10
        // nameMap: 'cn'
        // color: '#fff' //字体颜色
      },
      left: 'center',
      top: 'middle',
      cellSize: [70, 70],//改变图的大小
      range: '2017-02'
    }
  ],
  series: [
    {
      type: 'effectScatter',
      color: '#C0464D', //改变散点颜色
      coordinateSystem: 'calendar',
      links: links,
      calendarIndex: 0,
      symbolSize: function (val) {
        return val[1] / 40;
      },
      data: graphData
    }
  ]
};

option && myChart.setOption(option);
### ECharts 日历组件的使用方法 ECharts日历组件提供了一种灵活的方式来展示时间序列数据。以下是关于如何配置和使用该组件的具体说明。 #### 配置项详解 日历组件的核心在于 `calendar` 和 `series` 的配合使用。`calendar` 定义了日历的基本属性,如范围、布局等;而 `series` 则定义了具体的数据及其样式[^1]。 - **calendar**: 设置日历的基础参数。 - `range`: 指定显示的时间范围,可以是一个具体的年份(如 `'2023'`),也可以是自定义的日期区间(如 `['2023-01-01', '2023-12-31']`)。 - `cellSize`: 单元格大小,支持固定数值或自动调整。 - **series**: 数据部分。 - `type`: 设为 `'heatmap'` 或其他适合类型的图表。 - `data`: 时间与对应值的数组,通常为 `[date, value]` 形式的二维数组。 - `symbol`: 可以修改默认形状,例如改为矩形 `symbol: 'rect'`[^2]。 #### 示例代码 以下是一段完整的示例代码,展示了如何利用 ECharts 创建一个简单的日历热力图: ```javascript // 初始化 echarts 实例 var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); // 配置选项 var option = { calendar: [ { top: 'middle', left: 'center', cellSize: ['auto', 25], // 自动宽度,高度为25px range: '2023', // 显示整个2023年的日历 dayLabel: { nameMap: 'en' }, // 英文星期名称 monthLabel: { nameMap: 'EN' } // 大写英文月份名称 } ], series: [ { type: 'heatmap', coordinateSystem: 'calendar', data: generateData(), // 动态生成数据函数 symbol: 'rect', // 修改单元格形状为矩形 itemStyle: { color: '#a9d7ff' }, label: { show: true, formatter: function (params) { return params.value[2]; // 展示第三个维度作为标签 } } } ] }; function generateData() { var date = new Date(2023, 0, 1); // 起始时间为2023年1月1日 var end = new Date(2024, 0, 1); // 结束时间为2024年1月1日 var result = []; while (date.getTime() < end.getTime()) { result.push([ echarts.time.format(date, '{yyyy}-{MM}-{dd}'), // 格式化日期 Math.floor(Math.random() * 100), // 随机生成值 echarts.time.format(date, '{ddd}') // 周几信息 ]); date.setDate(date.getDate() + 1); } return result; } myChart.setOption(option); ``` 上述代码实现了如下功能: 1. 使用 `generateData()` 函数动态生成一年内的随机数据,并将其绑定到日历上。 2. 将每个单元格的颜色设为浅蓝色 (`'#a9d7ff'`) 并启用了标签显示,标签内容为对应的周几信息。 #### 注意事项 为了实现更复杂的功能,比如点击事件变色或者高亮特定日期,可以通过监听鼠标交互来完成。例如,在初始化完成后调用 `on` 方法注册回调函数处理这些行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值