0

0

amCharts5 饼图数据标签显示原始值而非百分比

碧海醫心

碧海醫心

发布时间:2025-10-02 15:08:01

|

186人浏览过

|

来源于php中文网

原创

amcharts5 饼图数据标签显示原始值而非百分比

本教程旨在指导用户如何在amCharts5饼图中,将数据标签从默认的百分比显示方式修改为显示原始数值。通过配置pieSeries.labels.template.setAll方法中的text属性,我们可以轻松地引用数据源中的特定字段,从而实现标签内容的定制化,提升图表的直观性和信息传递效率。

引言

amCharts5 是一款功能强大且高度可定制的 JavaScript 图表库。在创建饼图时,其默认行为通常是在每个扇区的标签中显示该扇区所占总量的百分比。这对于理解各部分占比非常有用。然而,在某些场景下,用户可能需要直接在标签中显示原始的数值数据,而不是其对应的百分比。例如,当图表代表具体的数量、金额或人口时,直接显示原始值可能更具信息量。

问题阐述

默认情况下,amCharts5 饼图的标签会显示每个扇区在总和中所占的百分比。用户面临的需求是:如何配置 amCharts5 饼图,使其数据标签显示原始的数值,而不是自动计算并显示的百分比。

解决方案

amCharts5 提供了灵活的模板机制来定制图表元素的显示。对于饼图的标签,我们可以通过访问 pieSeries.labels.template 并使用 setAll() 方法来修改其属性,特别是 text 属性。text 属性支持使用数据字段的占位符(例如 {value}、{category} 等),这些占位符会在渲染时被替换为实际的数据值。

要显示原始数据,我们需要将 text 属性设置为引用存储原始数值的数据字段。假设我们的数据对象中有一个名为 value 的字段用于表示每个扇区的原始数值,那么我们可以将 text 属性设置为 '{value}'。

以下是实现此功能的关键配置代码:

雾象
雾象

WaytoAGI推出的AI动画生成引擎

下载
pieSeries.labels.template.setAll({
  radius: 25,       // 标签距离饼图中心的半径
  inside: true,     // 标签是否在饼图内部
  fontSize: 10,     // 字体大小
  text: '{value}'   // 关键:将标签文本设置为数据中的'value'字段
});

在这个配置中:

  • radius: 控制标签相对于饼图中心的位置。
  • inside: 如果设置为 true,标签将显示在饼图扇区内部。
  • fontSize: 设置标签文本的字体大小。
  • text: 这是核心属性。'{value}' 表示标签将显示数据源中 value 字段的原始数值。如果你的数据字段名称是 count 或 amount,则相应地改为 '{count}' 或 '{amount}'。

示例代码

为了提供一个完整的示例,我们将创建一个简单的 amCharts5 饼图,并配置其标签以显示原始数值。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>amCharts5 饼图显示原始值</title>
    <script src="https://cdn.amcharts.com/lib/5/index.js"></script>
    <script src="https://cdn.amcharts.com/lib/5/percent.js"></script>
    <script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script>
    <style>
        #chartdiv {
            width: 100%;
            height: 500px;
        }
    </style>
</head>
<body>
    <div id="chartdiv"></div>

    <script>
        am5.ready(function() {

            // 创建根元素
            var root = am5.Root.new("chartdiv");

            // 设置主题
            root.setThemes([
                am5themes_Animated.new(root)
            ]);

            // 创建饼图系列
            var series = root.container.children.push(
                am5percent.PieSeries.new(root, {
                    name: "Series",
                    categoryField: "category",
                    valueField: "value" // valueField 定义了扇区的大小
                })
            );

            // 设置数据
            series.data.setAll([
                { category: "市场A", value: 500 },
                { category: "市场B", value: 350 },
                { category: "市场C", value: 200 },
                { category: "市场D", value: 100 },
                { category: "市场E", value: 50 }
            ]);

            // 配置标签以显示原始值
            series.labels.template.setAll({
                radius: 25,       // 标签距离饼图中心的半径
                inside: true,     // 标签是否在饼图内部
                fontSize: 12,     // 字体大小
                fill: am5.color(0xffffff), // 标签字体颜色
                text: '{value}'   // 关键:显示原始的value值
            });

            // 配置工具提示(可选,但通常与标签一同定制)
            series.slices.template.setAll({
                tooltipText: "{category}: {value} ({valuePercentTotal.formatNumber('#.#')}%)"
            });

            // 添加图例
            var legend = root.container.children.push(am5.Legend.new(root, {
                centerX: am5.percent(50),
                x: am5.percent(50),
                marginTop: 15,
                marginBottom: 15
            }));
            legend.data.setAll(series.dataItems);

            // 播放动画
            series.appear(1000, 100);
            root.appear();

        }); // end am5.ready()
    </script>
</body>
</html>

在上述代码中,我们创建了一个包含 category 和 value 字段的数据集。通过 series.labels.template.setAll({ text: '{value}' }),我们明确指示 amCharts5 在标签中显示 value 字段的原始数值。

注意事项

  1. 数据字段匹配: 确保 text 属性中使用的占位符(例如 {value}、{count})与你的数据源中实际存储原始数值的字段名称完全匹配。如果你的数据字段是 amount,那么 text 属性应设置为 '{amount}'。
  2. 其他标签属性: labels.template.setAll 方法还可以用于定制标签的字体颜色 (fill)、背景 (background)、边框 (stroke)、位置 (centerX, centerY) 等。你可以根据需要进行进一步美化。
  3. 工具提示定制: 饼图通常还伴随有工具提示 (tooltips)。如果希望工具提示也显示原始值,或者同时显示原始值和百分比,你需要类似地配置 series.slices.template.setAll({ tooltipText: "{category}: {value} ({valuePercentTotal.formatNumber('#.#')}%)" })。{valuePercentTotal.formatNumber('#.#')}% 是 amCharts5 提供的一个特殊占位符,用于显示格式化后的百分比。
  4. 数据格式化 如果原始数值需要特定的格式(例如货符号、小数位数),可以使用 amCharts5 的格式化功能,例如 text: '{value.formatNumber("#,###.00")}'。

总结

通过简单地配置 am5percent.PieSeries 的 labels.template.setAll 方法中的 text 属性,amCharts5 允许开发者灵活地控制饼图标签的显示内容。无论是显示原始数值、百分比还是两者的组合,这种模板机制都提供了强大的定制能力,帮助用户创建更具表现力和信息量的图表。掌握这一技巧,将使你在使用 amCharts5 进行数据可视化时拥有更大的自由度。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.11.20

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号