highcharts样式记录

图表设置

const rendChart = (min, max) => {
  Highcharts.setOptions({
    global: { useUTC: false },
  });
  Highcharts.chart('hourly-chart', {
    chart: {
      spacingBottom: 0,
      marginLeft: 53,
      marginTop: 10,
      marginBottom: 0,
      marginRight: 13,
      style: {
        fontSize: '0.2rem',
        color: '#363a44',
        lineHeight: '0.32rem',
        fontWeight: '400',
        fontFamily: 'PingFang SC',
      },
      type: 'spline',
    },
    accessibility: {
      enabled: false,
    },
    title: {
      text: '',
    },
    credits: { enabled: false },
    xAxis: {
      type: 'datetime',
      dateTimeLabelFormats: {
        hour: '%H',
        day: '%d日',
        week: '%m-%d',
        month: '%Y-%m',
        year: '%Y',
      },
      min: min,
      max: max,
      tickInterval: 3600 * 1000 * 3,
      lineWidth: 0,
      gridLineWidth: 0,
      tickWidth: 0,
      labels: {
        enabled: false,
      },
      plotBands: getPlotBands(),
    },
    yAxis: {
      lineWidth: 0,
      gridLineWidth: 0,
      title: {
        text: '',
      },
      labels: {
        align: 'center',
        overflow: 'justify',
        y: 0,
        x: -7,
        formatter: function () {
          return this.value + '℃';
        },
        style: {
          color: '#686B73',
          fontWeight: '400',
          lineHeight: '12px',
          fontSize: '12px',
          textOverflow: 'none',
        },
        zIndex: 10,
      },
    },
    tooltip: {
      backgroundColor: 'rgba(52, 174, 237, 0.9)',
      shadow: false,
      valueSuffix: '',
      useHTML: true,
      margin: 0,
      padding: 0,
      borderRadius: 0,
      formatter: function () {
        return `<div class="tooltip" style="width: 110px;height: 52px;display: flex;flex-direction: column;margin: 0px;padding: 10px;fontSize: 13px;color: #fff;">
          <div style="height: 16px;lineHeight: 16px;backgroundColor: 'rgba(52, 174, 237, 0.9)';">${dayjs(
            this.x
          ).format('M/DD HH')}点</div>
          <div style="height: 16px;lineHeight: 16px;backgroundColor: 'rgba(52, 174, 237, 0.9)';">weather${
            this.y
          }℃</div>
        </div>`;
      },
    },
    legend: {
      enabled: false,
    },
    plotOptions: {
      spline: {
        dataLabels: {
          enabled: true,
          useHTML: true,
          x: 0,
          formatter: function () {
            return `<img class="charts-label" style="display: flex;alignItems: center;width: 20px;height: 20px;" src="${imageUrl(
              `ww/${this.point.ww}.png`
            )}" alt="hourly" />`;
          },
        },
        states: {
          hover: {
            halo: {
              size: 6,
            },
          },
        },
      },
      series: {
        marker: {
          radius: 2,
          width: 1,
          lineWidth: 1,
          borderWidth: 1,
          symbol: 'circle',
        },
      },
    },
    series: [
      {
        name: '实况',
        type: 'spline',
        color: '#FF8F1F',
        yAxis: 0,
        data: hourlyData.value,
        pointWidth: 70,
        marker: {
          enabled: false,
        },
      },
    ],
  });
};

min与max设置

const hourlyDataFormat = (data) => {
  data.value.forEach((item, index) => {
    item.wsl = getWindLevel(item.ws);
    if (index) {
      let before = getWindLevel(data.value[index - 1].ws);
      item.isBefore = before === item.wsl;
    } else item.isBefore = false;
    if (index !== data.value.length - 1) {
      let after = getWindLevel(data.value[index + 1].ws);
      item.isAfter = after === item.wsl;
    } else item.isAfter = false;
    // 温度为null处理
    item.temp = item.temp !== null ? parseFloat(item.temp) : '--';
    item.pr = item.pr !== null ? parseFloat(item.pr) : '--';
    item.x = dayjs(item.t).valueOf();
    item.y = Number(item.temp);
    item.t = dayjs(item.t).get('hour');
    item.ww = parseInt(item.ww).toString();
    item.ww = item.t >= 6 && item.t < 20 ? item.ww.padStart(3, '0') : item.ww.padStart(2, '0');
  });
  let min = data.value[0].x - 3600 * 1000 * 1.5;
  let max = data.value[data.value.length - 1].x + 3600 * 1000 * 1.5;
  nextTick(() => {
    rendChart(min, max);
  });
};

附加样式设置

#hourly-chart {
  height: 1.88rem;
  width: 100%;
  :deep(.charts-label) {
    margin-top: -0.3rem;
    margin-left: -0.2rem;
    position: inherit;
    z-index: 1 !important;
  }
  :deep(.highcharts-tooltip) {
    margin-top: 0.33rem;
    margin-left: 0.05rem;
    span {
      .tooltip {
        position: inherit;
        z-index: 9999 !important;
        background: rgba(52, 174, 237, 0.9);
        border-radius: 0px 55px 55px 24px;
      }
    }
  }
}

plotBands是图表背后分条的样式

const getPlotBands = () => {
  let plotBands = [];
  let colors = ['rgba(243, 245, 249, 1)', 'rgba(255,255,255,1)', 'rgba(52, 174, 237, 0.1)'];
  hourlyData.value.forEach((item, index) => {
    // if (index !== hourlyData.value.length - 1) {
    plotBands.push({
      from: item.x - 3600 * 1000 * 1.5,
      to: item.x + 3600 * 1000 * 1.5,
      color: index === 0 ? colors[2] : colors[index % 2],
    });
    // } else {
    plotBands.push({
      from: item.x,
      to: item.x,
      color: colors[index % 2],
    });
    // }
  });
  console.log(plotBands);
  console.log(hourlyData.value);
  return plotBands;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/889938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java创建型模式(二)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式、工厂模式扩展等完整详解,附有代码——案例)

文章目录 五.工厂模式5.1 概述5.2简单工厂模式5.2.1 概述5.2.2 结构5.2.3 实现5.2.4 优缺点5.2.5 扩展—静态工厂 5.3 工厂方法模式5.3.1概述5.3.2 结构5.3.3 实现5.3.4 优缺点 5.4 抽象工厂模式5.4.1 概述5.4.2 结构5.4.3 实现5.4.4 优缺点5.4.5 使用场景 5.5 工厂模式扩展 五…

MyBatis-Plus 之 typeHandler 的使用

一、typeHandler 的使用 1、存储json格式字段 如果字段需要存储为json格式&#xff0c;可以使用JacksonTypeHandler处理器。使用方式非常简单&#xff0c;如下所示&#xff1a; 在domain实体类里面要加上&#xff0c;两个注解 TableName(autoResultMap true) 表示自动…

JAVA基础 day12

一、File、IO流 File是java.io.包下的类&#xff0c;file类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以代表文件、文件夹&#xff09;&#xff0c;使用File可以操作文件及文件夹。 注意&#xff1a;File只能对文件本身进行操作&#xff0c;不能读写文件里…

Redis到底是单线程还是多线程的?详解

1. Redis是单线程还是多线程的&#xff1f; Redis 的核心执行模型是单线程的&#xff0c;但自 Redis 6.0 版本起&#xff0c;在特定场景下支持了多线程处理。 1.1. Redis 的核心执行是单线程的 Redis 的单线程指的是 Redis 的⽹络 IO 以及键值对指令读写是由⼀个线程来执⾏的…

Unity实现自定义图集(四)

以下内容是根据Unity 2020.1.0f1版本进行编写的   在之前的篇章中已经把自定义图集在编辑器上的使用,以及运行时所需的信息都准备好了,接下来就是魔改UGUI的Image组件,使其能够像Image那样运行时如果引用的资源有打自定义图集,则加载对应自定义图集的Texture。 1、思路 …

【C语言】指针练习题

一、指针指向问题 int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 结果为&#xff1a;2&#xff0c;5。&a是整个数组&#xff08;&a 1&#xff09;被强转为&#xff08;int*&am…

使用 Helsinki-NLP 中英文翻译本地部署 - python 实现

通过 Helsinki-NLP 本地部署中英文翻译功能。该开源模型性价比相对高&#xff0c;资源占用少&#xff0c;对于翻译要求不高的应用场景可以使用&#xff0c;比如单词&#xff0c;简单句式的中英文翻译。 该示例使用的模型下载地址&#xff1a;【免费】Helsinki-NLP中英文翻译本…

效率提高——自动登录校园网(河海大学)与模拟点击与输入获取最新消息

文章目录 零、前言一、自动登录校园网1.1 快速锁定小工具1.2 版本问题1.3 出现进程未结束的情况1.4 关于chromedriver.exe1.5 打包ico图片格式 二、获取信息门户最新消息参考文章 零、前言 最近被校园网弄的也是比较烦心&#xff0c;而且准备远程弄弄这些玩具&#xff0c;为以…

PostgreSQL数据库安全管理,细节都在这里了

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

创建一个c#程序,实现字符串类型转整数类型

首先&#xff0c;创建一个c#程序 在代码编辑器中编写代码&#xff0c;点击Run按钮或者按下F5键来运行程序。 下面&#xff0c;编写将字符串类型转换为整数类型的代码。 sing System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…

基于单片机的书库环境监测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用DHT11湿度传感器检测湿度&#xff0c;DS18B20温度传感器检测温度&#xff0c; 采用滑动变阻器连接数模转换器模拟二氧化碳和氧气浓度检测&#xff0c;各项数值通过lc…

前端转换double数据,保留两位小数

Number Number(1.00) 1 Number(1.10) 1.1 Number(1.101) 1.101 要想前端展示页面按 1.00展示1&#xff0c;1.10 展示1.1 需要套一个number() 1.1 保留两位小数&#xff0c;并三位一个分隔符 indexView.value[key] formatNumber(indexView.value[key].toFixed(2))//格式…

五子棋项目自动化测试

目录 一、五子棋项目介绍 二、编写Web测试用例 三、自动化测试脚本开发 1、引入依赖 2、设计框架 3、Utils 4、LoginPage 5、RegisterPage 6、MatchPage 7、RunTest类 8、运行程序 一、五子棋项目介绍 五子棋项目是基于 WebSocket 实现的多人在线对战系统&#xff0…

【Vue】Vue 快速教程

Vue tutorial 参考&#xff1a;教程 | Vue.js (vuejs.org) 该教程需要前置知识&#xff1a;HTML, CSS, JavaScript 学习前置知识&#xff0c;你可以去 MDN Vue framework 是一个 JavaScript framework&#xff0c;以下简称 Vue&#xff0c;下面是它的特点 声明式渲染&#xff…

学习threejs,光晕效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言二、&#x1f340;光晕效果实现1. ☘…

powerbi之常用DAX函数使用介绍——提供数据源练习

前述&#xff1a; 本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据&#xff0c;数据源链接如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 提取码&#xff1a;y17e 一、CALCULATE 1.语法结构 语法结构CALCUL…

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

多线程——线程安全

目录 前言 一、观察线程不安全 二、线程安全概念 三、产生线程安全问题的原因 1.分析示例代码 2.线程随机调度 3.修改共享数据 4.原子性 5.可见性 6.指令重排序 四、解决示例代码的问题 结尾 前言 我们学习多线程编程的目的是为了能够实现“并发编程”&#xff0c;…

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元&#xff08;GRU&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;它通过引入门控机制来控制信息的流动&#xff0c;从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出&#xff0c;它简化了…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…