Highcharts气泡填充图

news/2024/9/14 1:12:24 标签: Highcharts, 气泡图, 图表, 前端, vue.js

https://www.hcharts.cn/demo/highcharts/packed-bubble/

如果分类种类有很多,一种的柱状图显示出来界面非常拥挤,此时可以使用气泡图来表示。

首先我们要下载引入,这里参考此文档即可。

https://www.hcharts.cn/docs/install-from-npm/

    drawbar() {
      let that = this;
      const sortedData = this.qipaoListData.sort((a, b) => b.count - a.count);
      const top20Data = sortedData.slice(0, 20);
      if (this.qipaoListData.length > 20) {
        const otherData = sortedData.slice(20);
        const otherCount = otherData.reduce((acc, cur) => acc + cur.count, 0);
        const otherItem = {
          text: "其它",
          count: otherCount
        };
        top20Data.push(otherItem);
      }

      let chartContent = {
        coordinate: [],
        series: [
          {
            data: []
          }
        ]
      };
      top20Data.forEach(item => {
        chartContent.coordinate.push(item.text);
        chartContent.series[0].data.push(item.count);
      });

      const categories = chartContent.coordinate;
      const values = chartContent.series[0].data;

      // 定义颜色数组
      const colors = [
        "#FF5733",
        "#33FF57",
        "#3357FF",
        "#F1C40F",
        "#8E44AD",
        "#E74C3C",
        "#3498DB",
        "#2ECC71",
        "#9B59B6",
        "#34495E",
        "#1ABC9C",
        "#F39C12",
        "#D35400",
        "#C0392B",
        "#7D3C98",
        "#2980B9",
        "#27AE60",
        "#2C3E50",
        "#E67E22"
      ];

      // 创建数据数组,包含每个分类的名称、对应的值和颜色

      const chartData = categories.map((category, index) => ({
        name: category,
        value: values[index], // 对应的值
        z: values[index], // 使用 z 属性来控制气泡大小
        color: colors[index % colors.length] // 为每个气泡指定颜色
      }));

      const myChart = Highcharts.chart(this.$refs.chart1, {
        chart: {
          type: "packedbubble",
          height: "330px",
          events: {
            load: function() {
              this.series.forEach(series => {
                series.data.forEach(point => {
                  point.update({
                    z: point.value // 使用 value 作为气泡的大小
                  });
                });
              });
            }
          }
        },
        title: {
          text: null // 设置标题为 null,确保不显示标题
        },
        tooltip: {
          useHTML: true,
          pointFormat: "{point.name}<br>{point.value}条"
        },
        plotOptions: {
          packedbubble: {
            minSize: chartData.length === 1 ? "50%" : "70%",
            maxSize: chartData.length === 1 ? "100%" : "300%",
            zMin: 0,
            zMax: 1000,
            layoutAlgorithm: {
              splitSeries: false,
              gravitationalConstant: 0.02,
              bubblePadding: 10, //气泡间隔
              overlap: false
            },
            dataLabels: {
              enabled: true,
              align: "center",
              className: "circle-p",
              format: "{point.name}<br>{point.value}条", // 使用 <br> 标签换行
              filter: {
                property: "value",
                operator: ">",
                value: 0
              },
              style: {
                color: "black",
                textOutline: "none",
                fontWeight: "normal",
                align: "center",

                fontSize: "12px" // 设置文字大小
              }
            }
          }
        },
        series: [
          {
            name: "问题类型",
            data: chartData, // 使用从 chartContent 生成的数据
            events: {
              click: function(event) {
                if (event.point.name) {
                  if (event.point.name == "其它") {
                    that.$message({
                      message: "其它暂不支持反查!",
                      type: "warning",
                      showClose: true
                    });
                  } else {
                    that.condition.wTLX = event.point.name;
                    that.currentListDataX.index = 1;
                    that.condition.pageIndex = 1;
                    that.getTable();
                    that.echartsChange2 = true;
                  }
                }
              }
            }
          }
        ]
      });
    },

这里面是对气泡做了一个限制。只取数组前数量最多的20个。对气泡赋上颜色及一些基础设置供大家参考


http://www.niftyadmin.cn/n/5641142.html

相关文章

C++ 原子变量atomic variable

原子变量 原子变量&#xff08;atomic variable&#xff09;是 C11 引入的一种同步机制&#xff0c;用于在多线程环境中进行无锁的、线程安全的操作。原子变量的操作是不可分割的&#xff0c;即在执行过程中不会被其他线程中断&#xff0c;从而避免了数据竞争和不一致的问题。…

【工具与中间件】百度翻译API实战

文章目录 前言1. 注册与代码Demo1.1 注册1.2 代码Demo 2. 实战2.1 运行Demo2.2 配置环境变量2.3 编写实际代码并操作2.3.1 准备基础代码2.3.2 准备FastJson2.3.3 单体条数据翻译测试2.3.4 执行翻译 3. 总结参考资料 百度翻译API实战 记一次使用百度翻译API翻译表数据 前言 …

提前购|基于SSM+vue的创新型产品提前购平台(源码+数据库+文档)

创新型产品提前购平台 基于SSMvue的创新型产品提前购平台 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 发布企业管理实现 个体管理实现 投资企业管理实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

MySQL数据类型-介绍

MySQL 支持多种数据类型&#xff0c;这些数据类型可以根据它们所存储的数据类型大致分为几类&#xff1a;数值类型、日期和时间类型、字符串&#xff08;字符&#xff09;类型、空间数据类型以及JSON数据类型。 一、数据类型 1.整数类型 TINYINT&#xff1a;非常小的整数。例…

9 自研rgbd相机基于rk3566之qt框架开发主线程与opengl_widget点云显示

qt框架开发opengl_widget点云显示 mainwindow主线程代码详解1 主线程功能:2 主线程代码示例:Qopenglwidget点云显示类代码详解1 qtopenglwidget框架介绍:2 qtopenglwidget渲染流程:3 qtopenglwidget顶点与片段着色器配置示例:4 qtopenglwidget主线程更新点云函数:5 qtope…

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例&#xff1a;使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

探索NVIDIA RTX 4060 8G与RTX 3060 12G:性能与适用场景的深度解析

在考虑NVIDIA RTX 4060 8G和RTX 3060 12G两种配置时&#xff0c;我们需要根据具体的应用场景来做出选择。RTX 4060 8G显卡以其较快的处理速度而著称&#xff0c;适合需要快速响应的任务&#xff0c;如实时渲染、视频编辑和部分机器学习任务。而RTX 3060 12G显卡则因其较大的显存…

RPC框架需要解决的问题

RPC&#xff08;Remote Procedure Call&#xff09;框架是分布式系统中的关键组件&#xff0c;用于在不同的网络节点之间进行远程服务调用。一个成熟的 RPC 框架需要解决一系列技术问题&#xff0c;以确保系统的高效性、可靠性和可扩展性。本文将详细探讨 RPC 框架需要解决的核…