极致呈现系列之:Echarts平行坐标系的多维度分析

news2024/11/15 11:42:52

目录

  • 平行坐标系简介
  • 平行坐标系的常用配置项
  • Vue3中创建平行坐标系
  • 美化平行坐标系
    • 样式美化

平行坐标系简介

平行坐标系是一种将多个维度的数值以平行的直线绘制在坐标系上的可视化方式。通过绘制多条平行直线,并将数据点映射到这些直线上,我们可以直观地观察到不同维度之间的关系和趋势。平行坐标系在数据探索和分析中具有广泛的应用,特别是在多维数据的可视化方面。

平行坐标系的常用配置项

  1. parallelAxis:定义坐标轴和维度的配置。
  • dim:坐标轴的维度序号(索引),指定维度在数据中的位置。
  • name:坐标轴的名称。
  • type:坐标轴类型。可选值如下:
    value数值轴,适用于连续数据。
    category 类目轴,适用于离散的类目数据。为该类型时类目数据可自动从 series.data 或 ataset.source 中取,或者可通过 parallelAxis.data 设置类目数据。 time时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。
    log对数轴。适用于对数数据。
  • min: 坐标轴刻度最小值。
    可以设置成特殊值 ‘dataMin’,此时取数据在该轴上的最小值作为最小刻度。 不设置时会自动计算最小值保证坐标轴刻度的均匀分布。 在类目轴中,也可以设置为类目的序数(如类目轴 data: [‘类A’, ‘类B’, ‘类C’] 中,序数 2 表示 ‘类C’。也可以设置为负数,如 -3)。 当设置成 function 形式时,可以根据计算得出的数据最大最小值设定坐标轴的最小值。如:
 min: function (value) {
         return value.min - 20;
 }
其中 value 是一个包含 min 和 max 的对象,分别表示数据的最大最小值,这个函数可返回坐标轴的最小值,也可返回 null/undefined 来表示“自动计算最小值”(返回 null/undefined 从 v4.8.0 开始支持)。
  • max:坐标轴刻度最大值。
    可以设置成特殊值 ‘dataMax’,此时取数据在该轴上的最大值作为最大刻度。 不设置时会自动计算最大值保证坐标轴刻度的均匀分布。 在类目轴中,也可以设置为类目的序数(如类目轴 data: [‘类A’, ‘类B’, ‘类C’] 中,序数 2 表示 ‘类C’。也可以设置为负数,如 -3)。 当设置成 function 形式时,可以根据计算得出的数据最大最小值设定坐标轴的最小值。如:
max: function (value) {
     return value.max - 20;
}
 其中 value 是一个包含 min 和 max 的对象,分别表示数据的最大最小值,这个函数可返回坐标轴的最大值,也可返回 null/undefined 来表示“自动计算最大值”(返回 null/undefined 从 v4.8.0 开始支持)。
  • inverse:是否是反向坐标轴,即反向显示维度的刻度,默认为false
  • boundaryGap:是否在坐标轴两端留白,用于美化展示效果,默认为true
  • axisLabel:坐标轴标签的样式配置,比如字体颜色、字号等。
  • axisLine:坐标轴线的样式配置,比如线条颜色、线宽等。
    parallelAxis配置示例,下面示例定义三个维度的配置:
parallelAxis: [
  { dim: 0, name: '维度1', type: 'value' },
  { dim: 1, name: '维度2', type: 'value' },
  { dim: 2, name: '维度3', type: 'category' }
]
  1. series:定义数据系列的配置。
    • type:数据系列的类型,默认为"parallel",表示平行坐标系。
    • data:数据系列的数据源,可以是一个二维数组,每行表示一个数据点的各个维度的值。
      series配置示例,下面示例定义一个平行坐标系的数据系列:
    series: [
      {
        type: 'parallel',
        data: [
          [1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]
        ]
      }
    ]
    
  2. visualMap:定义数据映射到视觉元素的配置,用于根据数据值来设置线条颜色、宽度、透明度等。
    • type:映射的类型,默认为"continuous",表示连续型映射。
    • minmax:数据值的最小值和最大值,用于确定映射范围。
    • inRange:映射范围内的视觉元素配置,比如线条颜色、宽度等。
    • calculable:是否支持手动拖动调整映射范围,默认为false
      visualMap配置示例,下面示例通过visualMap配置来设置线条颜色的映射:
    visualMap: {
      type: 'continuous',
      min: 0,
      max: 10,
      inRange: {
        color: ['#ff0000', '#00ff00'] // 线条颜色从红色到绿色渐变
      }
    }
    
  3. lineStyle:定义平行坐标系的线条样式。
    • color:线条的颜色。
    • width:线条的宽度。
    • opacity:线条的透明度。
      定义线条的样式示例:
    lineStyle: {
      color: '#0000ff',
      width: 2,
      opacity: 0.8
    }
    
  4. label:定义标签的样式。
    • show:是否显示标签,默认为false
    • position:标签的位置,默认为"top",可以是"top""bottom""left""right""inside"等。
    • formatter:标签的格式化函数,用于自定义标签显示的内容。
    • color:标签的颜色。
      定义标签的样式示例:
    label: {
      show: true,
      position: 'top',
      color: '#ffffff',
      formatter: function (params) {
        return params.value.toString();
      }
    }
    

Vue3中创建平行坐标系

  1. 创建vue项目,安装ECharts库
npm install echarts --save
  1. 新建ParallelView.vue文件,使用import语句引入ECharts库
import * as echarts from 'echarts'; 
  1. 创建图表容器:在ParallelView组件的template中,添加一个div元素作为图表的容器。给它一个唯一的ref属性,以便在后面初始化图表对象时使用
<template>
   <div ref="chart" style="width:600px;height:400px; margin: 20px auto;"></div>
</template>
  1. 初始化图表对象:在ParallelView组件中定义chart
const chart = ref(null)

mounted生命周期钩子函数中,使用echarts.init方法初始化图表对象。

<script setup>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
const chart = ref(null)
onMounted(() => {
  const myChart = echarts.init(chart.value) 
})
</script>

5.准备数据,实际项目开发中,这里的数据应该是从后台的API接口获取的,这里直接写在了前端。

const data = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12], 
];
  1. 配置坐标轴和维度。使用parallelAxis配置坐标轴和维度
parallelAxis: [
    { dim: 0, name: '维度1' },
    { dim: 1, name: '维度2' },
    { dim: 2, name: '维度3' },
  ]
  1. 定义数据系列。使用series配置数据系列
series: [
    {
      type: 'parallel',
      data: data
    }
  ]
  1. 使用chart.setOption方法配置图表的参数。
onMounted(() => {
  const myChart = echarts.init(chart.value)
  const option = {
    parallelAxis: [
      { dim: 0, name: '维度1' },
      { dim: 1, name: '维度2' },
      { dim: 2, name: '维度3' },
    ],
    series: [
      {
        type: 'parallel',
        data: data
      }
    ]
  } 
  myChart.setOption(option) 
})

运行程序,刷新浏览器,看下效果
在这里插入图片描述

美化平行坐标系

样式美化

  1. 轴线样式:可以通过配置axisLine属性来设置坐标轴线的样式,包括线条颜色、粗细、透明度等。
 parallelAxis: [
      {
        dim: 0,
        name: '维度1',
        axisLine: {
          lineStyle: {
            color: '#f0f',
            width: 2,
            opacity: 0.8
          }
        }
      },
      {
        dim: 1, 
        name: '维度2', 
        axisLine: {
          lineStyle: {
            color: '#333',
            width: 2,
            opacity: 0.8
          }
        }
      },
      {
        dim: 2, 
        name: '维度3', 
        axisLine: {
          lineStyle: {
            color: '#999',
            width: 2,
            opacity: 0.8
          }
        }
      },
  1. 刻度样式:可以通过配置axisTick属性来设置刻度线的样式,包括线条颜色、长度、粗细等。
 parallelAxis: [
       {
        dim: 0,
        name: '维度1',
        axisLine: {
          lineStyle: {
            color: '#f0f',
            width: 2,
            opacity: 0.8
          }
        },
        axisTick: {
          show: true,
          lineStyle: {
            color: '#000',
            width: 1,
            type: 'solid'
          }
        }
      },
      //其它代码
    ],
  1. 标签样式:可以通过配置axisLabel属性来设置坐标轴标签的样式,包括字体颜色、字号、旋转角度等。
 parallelAxis: [
      {
        dim: 0,
        name: '维度1',
        axisLine: {
          lineStyle: {
            color: '#f0f',
            width: 2,
            opacity: 0.8
          }
        },
        axisTick: {
          show: true,
          lineStyle: {
            color: '#000',
            width: 1,
            type: 'solid'
          }
        },
        axisLabel: {
          show: true,
          color: '#f00',
          fontSize: 12,
          rotate: 45
        }
      },
      //其它代码
  ]
  1. 坐标轴间隔:可以通过配置axisLineaxisTickinterval属性来控制坐标轴线和刻度线的间隔显示。
parallelAxis: [
  {
   //其它代码
    axisLine: {
      interval: 0 // 显示全部坐标轴线
    },
    axisTick: {
      interval: 0 // 显示全部刻度线
    }
  },
  //其它代码
]
  1. 高亮显示:可以通过配置emphasis来设置高亮状态的样式,比如线条颜色、粗细等。
series: [
      {
        type: 'parallel',
        data: data,
        emphasis: {
          lineStyle: {
            color: '#ff0000',
            width: 2
          }
        }
      }
    ]

运行看效果
在这里插入图片描述
OK,关于Echarts 平行坐标系的相关内容就介绍到这里,有疑问的小伙伴评论区留言,喜欢的小伙伴点赞关注加收藏哦!你也可以通过微信公众号搜索“九仞山”关注我,获取更多内容!

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

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

相关文章

【小沐学Web】Node.js搭建HTTPS 服务器

文章目录 1、简介1.1 HTTPS协议1.2 Node.js中的HTTPS 2、生成自签名证书2.1 key文件2.2 csr文件2.3 crt文件 4、代码测试4.1 Node.js简介4.2 Node.js的http模块4.3 Node.js的Express模块4.4 Node.js的https模块4.5 Node.js的httpsexpress模块 结语 1、简介 1.1 HTTPS协议 HTTP…

QT6之多线程控制——互斥量和信号量

在程序中,通常竞争使用临界资源&#xff0c;但如果不加限制就很可能出现异常或未达到预期的结果。 临界资源一次仅允许被一个线程使用&#xff0c;它可以是一块内存、一个数据结构、一个文件或者任何其他具有排他性使用的东西。 这些必须互斥执行的代码段称为“临界区(Critical…

使用VmWare安装黑苹果系统

目录 1.介绍2.破解安装VMware3.unlocker解锁虚拟机3.1 关闭VMware相关的进程3.2 执行安装命令 4.VmWare创建虚拟机5. 下载并配置镜像以及虚拟机设置5.1 修改镜像5.2 修改虚拟机安装路径文件内容 6. 选择镜像启动虚拟机7.安装macOS系统7.1 开启此虚拟机7.2 选择语言->简体中文…

TEC半导体热电温控技术在复合相变材料储热性能测试中的应用

摘要&#xff1a;针对定形相变复合材料热性能测试中ASTM C1784动态热流计法和ASTM C518稳态热流计法的高精度可编程快速温度控制问题&#xff0c;本文提出了采用单独两路TEC半导体热电加热制冷模组作为执行机构的解决方案。解决方案中还配备了不同加热功率的TEC控制电源模块、高…

Netty 聊天室项目案例

1. 登入 在连接建立好之后&#xff0c;客户端发送登入&#xff0c;将登入消息封装为LoginRequestMessage这个类的对象&#xff0c; ctx.writeAndFlush(loginRequestMessage);&#xff09;使用ctx发送&#xff0c;注意入站处理器调用写相关方法&#xff0c;会触发出站处理器&am…

金升阳|过压保护是什么意思?过压保护电路的构建

过压保护是指在电路中加入一种保护措施&#xff0c;以避免电路过压而导致器件损坏、安全事故等情况的发生。在实际工程中&#xff0c;过压保护电路通常由过压检测电路和过压保护器件组成。本文将详细介绍过压保护的原理、过压保护电路的构建方法、常见的过压保护器件以及应用实…

【LLMs 入门实战 】第二式:MiniGPT4 模型学习与实战

2023年4月17日&#xff0c;多模态问答模型MiniGPT-4发布&#xff0c;实现了GPT-4里的宣传效果《MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models》《MiniGPT-4&#xff1a;使用高级大语言模型增强视觉语言理解》 模型介绍模型架构微调…

如何在conda环境中正确地使用pip

导言&#xff1a; 在conda环境下使用pip安装库时&#xff0c;许多时候会出现一些奇怪的现象&#xff0c;即用pip安装完成后在该conda环境下却没有该库。本文将说明该问题出现的原因&#xff0c;修复方式和如何正确地在conda环境中使用pip。 问题现象 复现&#xff1a; 新建环…

1-html

一 HTML 初体验 1 HTML 定义 HTML 超文本标记语言——HyperText Markup Language。 超文本是什么&#xff1f;链接标记是什么&#xff1f; 标记也叫标签&#xff0c;带尖括号的文本 2 标签语法 标签成对出现&#xff0c;中间包裹内容<>里面放英文字母&#xff08;标签…

Vim 自定义配色

本文首发于我的个人博客&#xff0c;欢迎点击访问&#xff0c;无广告节面简洁&#xff01; 最近重新开始学习Vim装上了WSL2&#xff0c;但发现Windows Terminal和vim的组合还是有很多问题需要解决的&#xff0c;由其默认的配色在某些状态下根本看不清字体&#xff0c;所以折腾…

小满vue3笔记(含源码解读)

第一章 1.mvvm架构 2.回顾vue2对比vue3 区别&#xff1a; vue2选项式api vue3组合式api 关于这两个的区别&#xff0c;你可以不准确的理解为&#xff0c;选项式api更贴近原生标准html文件结构&#xff1b; 而组合式api就像在html标签中写css&#xff1b;当然做了优化&…

最新大麦网抢票脚本-Python实战

学习时候的一个小例子&#xff0c;python挺有趣的&#xff0c;希望技术可以更进步 我也不多说啥了直接上图 系统:win10 python 版本:3.8.10 需要安装的库:selenium 安装方法: pip install selenium 抢H5版本也写了&#xff0c;但是速度有点慢2…5 就不发了 不如用autojs写感…

前端vue入门(纯代码)15

【16.Vue的过渡与动画】 1.点击切换按钮&#xff1a;实现某一元素的显示/隐藏 Test.vue文件中 <template><div><!-- 点击事件触发后&#xff0c;isShow取反 --><!-- 通过点击按钮让h1标签出现或者消失 --><button click"isShow !isShow&qu…

哈工大计算机网络课程网络层协议详解之:DHCP协议

哈工大计算机网络课程网络层协议详解之&#xff1a;DHCP协议 文章目录 哈工大计算机网络课程网络层协议详解之&#xff1a;DHCP协议如何获得IP地址&#xff1f;硬编码动态主机配置协议-DHCP&#xff1a;&#xff08;Dynamic Host Configuration Protocol&#xff09; 动态主机配…

设计模式篇(Java):前言(UML类图、七大原则)

编写软件过程中&#xff0c;程序员面临着来自耦合性&#xff0c;内聚性以及可维护性&#xff0c;可扩展性&#xff0c;重用性&#xff0c;灵活性等多方面的挑战&#xff0c;设计模式是为了让程序(软件)&#xff0c;具有更好&#xff1a; 代码重用性 (即&#xff1a;相同功能的…

Web自动化测试平台的设计与落地

目录 前言 一、目标和定位 二、平台特点 三、系统架构 四、相关技术栈 五、UI概览 六、待完善部分 总结&#xff1a; 前言 我最初开始接触Web自动化测试的时候&#xff0c;没有直接的领路人&#xff0c;测试行业知识也远不及如今这么丰富和易获取&#xff0c;当时我对于…

Hello算法学习笔记之搜索

一、二分查找 1.从数组中找到target的索引 注意&#xff1a;while条件是< O&#xff08;logn&#xff09; 二分查找并非适用于所有情况&#xff0c;原因如下&#xff1a; 二分查找仅适用于有序数据。若输入数据无序&#xff0c;为了使用二分查找而专门进行排序&#xff…

视频处理器对LED显示屏的作用

视频处理器在LED显示屏中扮演着重要的角色&#xff0c;其作用如下&#xff1a; 图像和视频信号处理&#xff1a;视频处理器负责对输入的图像和视频信号进行处理和优化&#xff0c;以确保在LED显示屏上呈现出高质量的图像和视频内容。它可以对图像进行去噪、锐化、色彩校正、亮度…

【数据结构】复杂度

目录 &#x1f4d6;什么是数据结构&#xff1f;&#x1f4d6;什么是算法&#xff1f;&#x1f4d6;算法效率&#x1f4d6;时间复杂度&#x1f516;大O的渐进表示法&#x1f516;常见时间复杂度计算举例&#x1f516;面试题&#xff1a;消失的数字 &#x1f4d6;空间复杂度&…