【echart】数据可视化

news2024/11/19 5:45:47

什么是数据可视化?

数据可视化主要目的:借助于图形化手段,清晰有效地传达与沟通信息。

数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理。

如何绘制?

echarts 图表的绘制,大体分为三步:

  • 1.根据 DOM 实例,通过 echarts.init 方法,生成 echarts 实例
  • 2.构建 options 配置对象,整个 echarts 的样式,皆由该对象决定
  • 3.最后通过 实例.setOption 方法,设置配置对象

绘制横向柱状图

<template>
  <p style="margin: 20px 20px 0;">【大区分布图】</p>
  <div ref="target" style="width: 600px; height: 400px"></div>
</template>
<script setup>
import { defineProps, onMounted ,ref} from "vue";
import * as echarts from "echarts";
import { BarChart } from "echarts/charts";
const props = defineProps({
  data: {
    type: Object,
    required: true,
  },
});
console.log(props.data);
let myChart = null;
const target = ref(null)

// 2、构建option对象
var option = {
  // x轴
  xAxis: {
    show:false,
    type: "value",
    max:function(value){
      return parseInt(value.max *1.2)
    }
  },
  // y轴
  yAxis: {
    type: "category",
    data:props.data.map((item)=>{
      return item.name
    }),
    inverse:true,
    axisLine:{
      show:false
    },
    axisTick:{
      show:false
    },
    axisLabel:{
      color:'#9eb1c8'
    }
  },
  // 图表绘制位置
  grid:{
    top:10,
    right:20,
    left:20,
    containLabel:true
  },
  // 核心配置
  series: [
    {
      type: "bar",
      data:props.data.map((item)=>({
        name:item.name,
        value:item.value
      })),
      showBackground:true,
      backgroundStyle:{
        color:'rgba(180,180,180,0.2)'
      },
      itemStyle:{
        color:'#5D98CE',
        barBorderRadius:5,
        shadowColor:'rgba(0,0,0,0.3)',
        shadowBlur:5
      },
      barWidth:12,
      label:{
        show:true,
        position: 'right',
        textStyle:{
          color:'#fff',
        }
      }
    },
  ],
};
onMounted(async () => {
  setTimeout(() => {
// 、初始化echarts实例
     myChart = echarts.init(target.value);
     // 3、通过实例.setOption(option)
myChart.setOption(option);
  }, 3000);
});

</script>

 

绘制风险雷达图

radar:坐标系配置

polar:坐标极点

angleAxis:坐标角度

radiusAxis:径向轴

series:核心配置

绘制异常处理双环形图

legend:图例配置(width:-5-->竖向展示)

tooltip:提示层

xAxis:x轴

yAxis:y轴

serise:


props.data.xxx.foreach((item,index)=>{
// 上层
    series.push({
        name:item.name,
        type:'pie',
        clockWise:false,
        hoverAnimation:false,
        radius:[73 - index*15+'%',68 - index*15+'%'],
        center:['55%','55%'],
        label:{
            show:false    
        },
        data:[
            {
                value:item.value,
                name:item.name
            },
            {
                value:1000,
                itemStyle:{
                    color:'rgba(0,0,0,0)',
                    borderWidth:0
                   },
                 toolip:{
                    show:false
                },
                hoverAnimation:false,

            }
        ]
       
    })
// 底层
    series.push({
        name:item.name,
        type:'pie',
        silent:true,
        z:1,
        clockWise:false,
        hoverAnimation:false,
        radius:[73 - index*15+'%',68 - index*15+'%'],
        center:['55%','55%'],
        label:{
            show:false    
        },
        data:[ {
                value:7.5,
                itemStyle:{
                    color:'rgb(3,31,62)',
                    borderWidth:0
                   },
                 toolip:{
                    show:false,
                    hoverAnimation:false,
                    }
                },
                {
                    value:2.5,
                    itemStyle:{
                    color:'rgba(0,0,0,0)',
                    borderWidth:0
                   },
                   toolip:{
                    show:false,
                    hoverAnimation:false,
                    }
                
                }]
    })
})

绘制数据传递关系图

graph和lines

xAxis:x轴,show:false

yAxis:y轴,show:false

series:

series:[
    {
        type:'graph',
        layout:'none',
        coordinateSystem:'cartesian2d',
        sysmbolSize:26,
        z:3,
        edgeLabel:{
        normal:{
            show:true,
            color:'#fff',
            textStyle:{
                fontSize:14
                },
                formatter:function(params){
                    return params.data.speed
                }
        }
    },
    label:{
        normal:{
        show:true,
        position:'bottom',
        color:'#5E5E5E'
        }
    },
    edgeSymbol:['none','arrow'],
    edgeSymbolSize:8,
    data:...,
    links:data.foreach((item,index)=>{
        source:item.source,
        target:item.target,
        speed:`${item.speed}kb/s`,
        lineStyle:{
            normal:{
                color:'#12b5d0',
                curveness:0.2
            }
            }
    })
   }
]

 

绘制关键词条文档云图

引入三方包:

npm install --save echarts-wordcloud@2.1.0

series:[{
type:[
{
    type:'wordCloud',
    sizeRange:[8,46],
    rotationRange:[0,0],
    gridSize:0,
    layoutAnimation:true,
    textStyle:{
        color:randomRGB
    },
    emphasis:{
        textStyle:{
            fontWeight:'bold',
            color:'#000'
        }
    }
    
}]
}]

 

时间轴图表绘制

const option = {
  timeline:{
    data:props.data,
    axisType:'category',
    autoPlay:true,
    playInterval:3000,
    left:'10%',
    right:'10%',
    bottom:'0%',
    width:'80%',
    label:{
      normal:{
        textStyle:{
          color:'#ddd'
        }
      },
      emphasis:{
        textStyle:{
          color:'#fff'
        }
      }
    },
    SymbolSize:10,
    lineStyle:{
      color:'#555'
    },
    checkpointStyle:{
      borderColor:'#888',
      borderWidth:2
    },
    controlStyle:{
      showNextBtn:true,
      showPreBtn:true,
      normal:{
        color:'#666',
        borderColor:'#666'
      },
      emphasis:{
        color:'#aaa'
      }
    }
  }
}

地图可视化绘制地图

  1. 导入地图的json文件
  2. 注册地图
  3. 配置option
echarts.registerMap('china',mapJson);
const option = {
          ...
    baseOption:{
        grid:{
            right:'2%',
            top:'15%',
            bottom:'10%',
            width:'20%'
        }
        geo:{
           show:true,
            map:'china',
            roam:true,
            zoom:0.8,
            center:[113.835,34.027],
            itemStyle:{
                normal:{
                    borderColor:'rgba(147,235,248,1)';
                    borderWidth:1,
                    areaColor:{
                        type:'radial',
                        x:0.5,
                        y:0.5,
                        r:0.5
                    },
                    colorStop:[
                        {offset:0,color:''},{offset:1,color:''}
                    ]
                },
                emphasis:{
                    areaColor:'',
                    borderWidth:2
                }
            }
        }
            
    }
}

地图可视化绘制散点图

   series: {
      name: 'Top 5',
      type: 'effectScatter',
      coordinateSystem: 'bmap',
      data: convertData(
        data
          .sort(function (a, b) {
            return b.value - a.value;
          })
          .slice(0, 6)
      ),
      symbolSize: function (val) {
        return val[2] / 10;
      },
      encode: {
        value: 2
      },
      showEffectOn: 'render',
      rippleEffect: {
        brushType: 'stroke'
      },
      label: {
        formatter: '{b}',
        position: 'right',
        show: true
      },
      itemStyle: {
        shadowBlur: 10,
        shadowColor: '#333'
      },
      emphasis: {
        scale: true
      },
      zlevel: 1
    }

数据自增

第三方库 countup

npm i --save countup.js@2.6.2

new CountUp(起始值,目标值).start();

电子屏幕字体

RX-LED.ttf
 

@font-face{
        font-family:'Electronic';
        src:url('./font/RX-LED.ttf');
}

渐变字体
 

.text-gradient{
    background-image: linear-gradient(to bottom,#e5e4ea,#5ea8f2);
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进入消息传递的魔法之门:ActiveMQ原理与使用详解

嗨&#xff0c;亲爱的童鞋们&#xff01;欢迎来到这个充满魔法的世界&#xff0c;今天我们将一同揭开消息中间件ActiveMQ的神秘面纱。如果你是一个对编程稍有兴趣&#xff0c;但又对消息中间件一知半解的小白&#xff0c;不要害怕&#xff0c;我将用最简单、最友好的语言为你呈…

mysql安装及操作

一、Mysql 1.1 MySQL数据库介绍 1.1.1 什么是数据库DB&#xff1f; DB的全称是database&#xff0c;即数据库的意思。数据库实际上就是一个文件集合&#xff0c;是一个存储数据的仓库&#xff0c;数据库是按照特定的格式把数据存储起来&#xff0c;用户可以对存储的数据进行…

秋招打卡算法题第一天

一年多没有刷过算法题了&#xff0c;已经不打算找计算机类工作了&#xff0c;但是思来想去&#xff0c;还是继续找吧。 1. 字符串最后一个单词的长度 public static void main(String[] args) {Scanner in new Scanner(System.in);while(in.hasNextInt()){String itemin.nextL…

2024/3/26 C++作业

定义一个矩形类&#xff08;Rectangle&#xff09;&#xff0c;包含私有成员&#xff1a;长(length)、宽&#xff08;width&#xff09;, 定义成员函数&#xff1a; 设置长度&#xff1a;void set_l(int l) 设置宽度&#xff1a;void set_w(int w) 获取长度&#xff1a;int…

Wireshark 抓包

启动时选择一个有信号的网卡双击打开&#xff0c;或者在 捕获选择里打开选择网卡。 然后输出下面的规则就可以抓到报文了。 最上面的三条是建立连接时的三次握手&#xff0c; 下面是发送数据hello 对应两条数据 最下面的4条是断时的4次挥手

【真题解析】题目 3151: 蓝桥杯2023年第十四届省赛真题-飞机降落【C++ DFS 超详解注释版本】

爆搜冥想 暴力枚举每一辆飞机对于每一个飞机都只存在两种情况&#xff0c;可以降落和不可以降落如果可以降落&#xff0c;计算降落后最早可以降落的时间pre&#xff0c;作为下一次递归的传参如果不可以降落&#xff0c;枚举下一辆飞机 注意这辆的降落有盘旋这种量子叠加态&…

mysql刨根问底

索引&#xff1a;排好序的数据结构 二叉树&#xff1a; 红黑树 hash表&#xff1a; b-tree&#xff1a; 叶子相同深度&#xff0c;叶节点指针空&#xff0c;索引元素不重复&#xff0c;从左到右递增排序 节点带data btree&#xff1a; 非叶子节点只存储索引&#xff0c;可…

HTTPS 从懵懵懂懂到认知清晰、从深度理解到落地实操

Https 在现代互联网应用中&#xff0c;网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全&#xff0c;我们都会选择采用https技术。甚至iOS开发调用接口的时候&#xff0c;必须是https接口&#xff0c;才能调用。现在有部分浏览器也开始强制要求网站必须使用https&am…

Python(Socket) +Unreal(HTTP)

Python&#xff08;Socket&#xff09; Unreal&#xff08;HTTP&#xff09; python&#xff08;Socket&#xff09;:UE&#xff1a;Post请求并发送本机IP 上班咯&#xff0c;好久没记笔记了。。。 局域网 UE的apk&#xff0c;请求Python的Socket 跑起Socket &#xff0c;UE发 …

长安链共识算法切换:动态调整,灵活可变

#功能发布 长安链3.0正式版发布了多个重点功能&#xff0c;包括共识算法切换、支持java智能合约引擎、支持后量子密码、web3生态兼容等。我们接下来为大家详细介绍新功能的设计、应用与规划。 随着长安链应用愈加成熟与广泛&#xff0c;一些在生产中很实用的需求浮出水面。长安…

RabbitMQ 《简单消息》

package com.xzp.rabbitmq.simple; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.xzp.rabbitmq.util.ConnectionUtil; /** * "Hello World!" * 简单消息 * 消息发送者 - R - 发送消息&#xff08;生产者&#xff09; …

nandgame中的汇编语言(Assembler Language)

配置一个汇编器&#xff0c;将符号指令转换为二进制机器码。汇编器指令有三个部分&#xff1a;目标、计算和&#xff08;可选的&#xff09;跳转条件。目标是操作的输出写入的寄存器。计算是ALU操作。请参阅ALU级别的位模式。跳转条件是将触发跳转的条件。请参阅条件级别以获取…

初识云原生、虚拟化、DevOps

文章目录 K8S虚拟化DevOpsdevops平台搭建工具大数据架构 K8S master 主节点&#xff0c;控制平台&#xff0c;Master节点负责核心的调度、管理和运维&#xff0c;不需要很高性能&#xff0c;不跑任务&#xff0c;通常一个就行了&#xff0c;也可以开多个主节点来提高集群可用度…

AIGC工具系列之——基于OpenAI的GPT大模型搭建自己的AIGC工具

今天我们来讲讲目前非常火的人工智能话题“AIGC”&#xff0c;以及怎么使用目前的AI技术来开发&#xff0c;构建自己的AIGC工具 什么是AIGC&#xff1f; AIGC它的英文全称为(Artificial Intelligence Generated Content)&#xff0c;中文翻译过来就是“人工智能生成内容”&…

v4l2采集视频

Video4Linux2&#xff08;v4l2&#xff09;是用于Linux系统的视频设备驱动框架&#xff0c;它允许用户空间应用程序直接与视频设备&#xff08;如摄像头、视频采集卡等&#xff09;进行交互。 linux系统下一切皆文件&#xff0c;对视频设备的操作就像对文件的操作一样&#xff…

C语言------指针(2)

前面已经向大家介绍了指针的一些基本内容&#xff0c;接下来&#xff0c;就在再我来先大家讲解一下指针的其他内容。 1. 数组名的理解 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; 在学习数组的过程中&#xff0c;我们肯定会写过以上代码&#xff0c;我们知道 int 是该数组的数…

[BT]BUUCTF刷题第8天(3.26)

第8天 Web [CISCN2019 华北赛区 Day2 Web1]Hack World 题目明确提示flag在flag表里的flag列&#xff0c;这里先尝试1 返回&#xff1a;你好&#xff0c;glzjin想要一个女朋友。 再尝试1&#xff0c;返回bool(false) 到这里就感觉是布尔盲注的题目类型了&#xff08;虽然我没…

GPT提示词分享 —— 代码释义者

提示词&#x1f447; 我希望你能充当代码解释者&#xff0c;阐明代码的语法和语义。 3.5版本&#x1f447; free2gpt 4.0版本&#x1f447; gpt4

深入解析快速排序算法

深入解析快速排序算法 一、快速排序算法简介二、快速排序算法过程三、快速排序算法示例四、快速排序算法分析1. 时间复杂度&#xff1a;2. 空间复杂度&#xff1a;3. 稳定性&#xff1a; 五、快速排序算法优化1. 优化基准元素的选择&#xff1a;2. 优化小数组的排序&#xff1a…

[HackMyVM]靶场Crossbow

kali:192.168.56.104 靶机:192.168.56.136 端口扫描 # nmap 192.168.56.136 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 22:17 CST Nmap scan report for crossbow.hmv (192.168.56.136) Host is up (0.0057s latency). Not shown: 997 closed tcp…