热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Charts.js使用Currency和ThousandsSeparator格式化Y轴

如何解决《Charts.js使用Currency和ThousandsSeparator格式化Y轴》经验,为你挑选了5个好方法。

我正在使用Charts.js在我的网站上显示图表.目前,标签显示为一长串数字(即123456).我希望它以千位分隔符显示为货币:(即$ 123,456)

我正在使用scaleLabel选项在值之前放置$ USD符号:

scaleLabel: "<%= ' $' + Number(value)%>"

以及插入逗号分隔符的函数:

function(label){return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");}

我只是不知道如何一起使用这些来得到我想要的东西.

这是小提琴:http://jsfiddle.net/vy0yhd6m/79/

(请记住,目前只有删除上面引用的两个Javascript中的一个时,图表才有效)

感谢您的帮助.



1> Perry Tew..:

我是chart.js的新手,但是我必须做的就是让Billy Moon的答案与最新版本2.1.6一起使用.

  var data = {
    labels: ["12 AM", "1 AM", "2 AM", "3 AM", "4 AM", "5 AM", "6 AM", "7 AM", "8 AM", "9 AM", "10 AM", "11 AM", "12 PM", "1 PM", "2 PM", "3 PM", "4 PM", "5 PM", "6 PM", "7 PM", "8 PM", "9 PM", "10 PM", "11 PM"],
    datasets: [
      {
        label: "Sales $",
        lineTension: 0,
        backgroundColor: "rgba(143,199,232,0.2)",
        borderColor: "rgba(108,108,108,1)",
        borderWidth: 1,
        pointBackgroundColor: "#535353",
        data: [65, 59, 80, 81, 56, 55, 59, 80, 81, 56, 55, 40, 59, 80, 81, 56, 55, 40, 59, 80, 81, 56, 55, 40]
      }
    ]
  };

  //var myChart =
  new Chart(document.getElementById('sales-summary-today'), {
    type: 'line',
    data: data,
    options: {
      animation: false,
      legend: {display: false},
      maintainAspectRatio: false,
      responsive: true,
      responsiveAnimationDuration: 0,
      scales: {
        yAxes: [{
          ticks: {
            beginAtZero: true,
            callback: function(value, index, values) {
              if(parseInt(value) >= 1000){
                return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
              } else {
                return '$' + value;
              }
            }
          }
        }]
      }
    }
  });

再次,归功于Billy Moon对标签格式化功能的回答.


谢谢!我们也可以使用`toLocaleString`而不是所有的正则表达式和条件,只是简单地说:`return"$"+ parseInt(value).toLocaleString();`
这是图表v2的解决方案.http://stackoverflow.com/questions/2037186​​7/chart-js-formatting-y-axis/28700578#28700578中列出的其他解决方案似乎不适用于最新版本
感谢您提供完整选项对象.当你是一个寻找类似答案的局外人时,你不知道所有这些选项都嵌套在哪里,我们避免浪费时间.此外,它绝对正确和有效:p.
同意,这应该是公认的答案.

2> Billy Moon..:

您应该能够在函数内部的标签组成中包含货币前缀...

var optiOns= {
    animation: false,
    scaleLabel:
    function(label){return  '$' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");}
};

http://jsfiddle.net/vy0yhd6m/80/


仅适用于Chart.js 1.x,如果需要2.x或更高版本的答案,请向下滚动。

3> 小智..:

我主要总结其他人提到的内容,但我认为对这个确切(并且经常遇到)问题的最干净的解决方案是使用带有美元货币格式的toLocaleString方法:

return value.toLocaleString("en-US",{style:"currency", currency:"USD"});

这适用于所有现代浏览器.在Mozilla的文档toLocaleString列出了具体的浏览器的兼容性和其他语言环境,货币和格式类型(例如百分比)的选项.

注意Chart.js版本2+(2016年4月发布)要求使用该callback方法进行高级刻度格式化:

var chartInstance = new Chart(ctx, {
  type: 'line',
  data: data,
  options: {
     scales: {
       yAxes: [{
         ticks: {
           callback: function(value, index, values) {
             return value.toLocaleString("en-US",{style:"currency", currency:"USD"});
           }
         }
       }]
     }
   }
 });

如果您使用Chart.js版本1.X的语法将是:

var myLineChart = new Chart(ctx).Line(data, options);
var data = {
  ...
}
var optiOns= {
  scaleLabel: function(label) {
    return value.toLocaleString("en-US",{style:"currency", currency:"USD"});
}

感谢Perry Tew 引用语法更改,以及想要使用的想法toLocaleString.


对于那些想从货币中删除小数点的人:`{style:“ currency”,currency:“ USD”,minimumFractionDigits:0,maximumFractionDigits:0}`

4> Ege Ersoz..:

添加Perry Tew的答案,如果您的轴上有负的美元金额(例如,当显示盈亏图表时),您可以使用:

ticks: {
    callback: function(value, index, values) {
        if(parseInt(value) > 999){
            return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        } else if (parseInt(value) <-999) {
            return '-$' + Math.abs(value).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        } else {
            return '$' + value;
        }
    }
}

显示负货币的正确格式是 - $ XXX,因此我们预先-$添加该值,然后通过Math.abs()运行它,将其转换为正数.



5> 小智..:

在chartjs v2.0中,您可以像这样设置全局选项:

Chart.defaults.global.tooltips.callbacks.label = function(tooltipItem, data) {
    return tooltipItem.yLabel.toLocaleString("en-US");
};

Chart.scaleService.updateScaleDefaults('linear', {
    ticks: {
        callback: function (value, index, values) {
            return value.toLocaleString();
        }
    }
});


推荐阅读
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
author-avatar
霜霜c
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有