echarts改造实现代码提交日历热力图

在这里插入图片描述
项目新需求,拿到需求给的图,说实话我有点懵,总不能HTML+css徒手画吧。。。
其次我去看了echarts,热力图类似,但是还是很不一样的样式,又懵了。。。

首先是解决方式,徒手画我是放弃了,逻辑处理麻烦,更何况每年日期的块块也不一样,于是我决定,改造echarts!!!

好吧,废话不说,上echarts实现代码:

import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;
// 制造当年假数据,具体情况数据请从接口获取
function getVirtualData(year) {
  const date = +echarts.time.parse(year + '-01-01');
  const end = +echarts.time.parse(+year + 1 + '-01-01');
  const dayTime = 3600 * 24 * 1000;
  const data = [];
  for (let time = date; time < end; time += dayTime) {
    data.push([echarts.time.format(time, '{yyyy}-{MM}-{dd}', false), 2]);
  }
  return data;
}
let nowyear = '2003'; // 动态改变年日期 
option = {
  tooltip: {
    formatter(params) {
      return (
        `${params.data[0]},` + `\n` + `
        提交代码:${params.data[1]}`
      );
    }
  },
  visualMap: {
    show: false,
    min: 0,
    max: 10000,
    type: 'piecewise',
    orient: 'horizontal',
    left: 'center',
    top: 65,
    pieces: [
      // 自定义每一段的范围,以及每一段的文字
      { gte: 150, color: 'blue' }, // 不指定 max,表示 max 为无限大(Infinity)。
      { gte: 100, lte: 150, color: 'rgb(98,155,223)' },
      { gte: 50, lte: 100, color: 'rgb(167,213,255)' },
      { gte: 1, lte: 50, color: 'rgb(214,233,250)' },
      { lte: 0, color: 'rgb(238,238,238)' }
    ]
  },
  calendar: {
    top: 120,
    left: 30,
    right: 30,
    cellSize: 25,
    splitLine: false,
    range: nowyear,
    itemStyle: {
      borderWidth: 0.5,
      borderColor: 'black',
      normal: {
        borderWidth: 3,
        borderColor: 'rgb(255, 255, 255)'
      }
    },
    yearLabel: { show: false }
  },
  series: {
    type: 'heatmap',
    coordinateSystem: 'calendar',
    data: getVirtualData(nowyear)
  }
};

option && myChart.setOption(option);

以上代码亲测可以实现以上原型图效果,但是坑还是很多,小心使用,大胆改造!good luck~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Echarts Python 绘制日历热力图,需要先获取 CSV 数据,并将其处理成适合绘制日历热力图的格式。下面是一个简单的例子,展示如何使用 Pandas 获取 CSV 数据,并将其处理成适合绘制日历热力图的格式: ```python import pandas as pd # 读取 CSV 文件 df = pd.read_csv("data.csv") # 将日期转换成字符串格式 df['date'] = df['date'].astype(str) # 将数据按照日期分组,并计算每天的数量 data = df.groupby('date').size().reset_index(name='count') # 将日期字符串转换成日期格式 data['date'] = pd.to_datetime(data['date']) # 将日期转换成 Echarts 日历热力图所需的格式 calendar_data = [[str(data['date'][i].date()), data['count'][i]] for i in range(len(data))] ``` 在上面的代码中,我们首先使用 Pandas 读取 CSV 文件,并将日期转换成字符串格式。然后,我们按照日期分组,并计算每天的数量。接着,我们将日期字符串转换成日期格式,并将日期转换成 Echarts 日历热力图所需的格式。最后,我们将数据存储在 `calendar_data` 变量中,以便后续使用。 接下来,我们使用 Echarts Python 绘制日历热力图。下面是一个简单的例子: ```python from pyecharts import options as opts from pyecharts.charts import Calendar calendar = Calendar() calendar.add("", calendar_data, calendar_opts=opts.CalendarOpts(range_="2021")) calendar.set_global_opts( title_opts=opts.TitleOpts(title="Calendar Heatmap"), visualmap_opts=opts.VisualMapOpts( max_=10, min_=0, orient="horizontal", is_piecewise=True ), ) calendar.render("calendar_heatmap.html") ``` 在上面的代码中,我们首先创建一个日历热力图实例,并使用 `add` 方法添加数据。`calendar_opts` 参数用于设置日历热力图的属性,例如日期范围。然后,我们使用 `set_global_opts` 方法设置全局属性,例如标题和视觉映射。最后,我们将日历热力图保存为 HTML 文件。 你可以根据自己的需求修改数据和图表属性,以及使用 Echarts Python 绘制其他类型的图表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值