te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - y axis Formatting with Metric prefix 1000=> 1k Chart.js - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - y axis Formatting with Metric prefix 1000=> 1k Chart.js - Stack Overflow

programmeradmin2浏览0评论

I'm using Chart.js to generate a bar chart that shows currency values. By default the y-axis labels use metric prefixes for abbreviation, e.g. 1k is displayed instead of 1000 and 1M instead of 1000000.

I have tried this code but it shows only the currency symbol but my number still like 1000000 formats!

this is the code what I have tried.

 yAxes: [{

              ticks: {
                 display: true,
                 beginAtZero: false,
                callback: function (value, index, values) {
                            if (parseInt(value) >= 1000) {
                           return '$' + value  ;
                           } else {
                        return value;
                         }
                         }
                       },
                          gridLines: {
                               show: true,

                             }
                       }],

thanks

I'm using Chart.js to generate a bar chart that shows currency values. By default the y-axis labels use metric prefixes for abbreviation, e.g. 1k is displayed instead of 1000 and 1M instead of 1000000.

I have tried this code but it shows only the currency symbol but my number still like 1000000 formats!

this is the code what I have tried.

 yAxes: [{

              ticks: {
                 display: true,
                 beginAtZero: false,
                callback: function (value, index, values) {
                            if (parseInt(value) >= 1000) {
                           return '$' + value  ;
                           } else {
                        return value;
                         }
                         }
                       },
                          gridLines: {
                               show: true,

                             }
                       }],

thanks

Share Improve this question edited Jun 17, 2017 at 18:19 A.Alshaikhli asked Jun 17, 2017 at 15:59 A.AlshaikhliA.Alshaikhli 4374 gold badges9 silver badges19 bronze badges 3
  • I still searching for the answer. do you have any idea how to solve it please ? – A.Alshaikhli Commented Jun 18, 2017 at 10:50
  • are your y-axis labels already display as 1k or just 1000 (regardless of $) ? and do you have regular (vertical) bar chart or horizontal ? – ɢʀᴜɴᴛ Commented Jun 18, 2017 at 11:04
  • i have vertical bar chart and it still display the value number like 1000! – A.Alshaikhli Commented Jun 18, 2017 at 11:08
Add a ment  | 

1 Answer 1

Reset to default 17

You can acplish this using the following y-axis ticks callback function ...

yAxes: [{
   ticks: {
      stepSize: 100000,
      callback: function(value) {
         var ranges = [
            { divider: 1e6, suffix: 'M' },
            { divider: 1e3, suffix: 'k' }
         ];
         function formatNumber(n) {
            for (var i = 0; i < ranges.length; i++) {
               if (n >= ranges[i].divider) {
                  return (n / ranges[i].divider).toString() + ranges[i].suffix;
               }
            }
            return n;
         }
         return '$' + formatNumber(value);
      }
   }
}]

You would also need to add some padding to the left of the chart, so that, the y-axis labels fits properly to the view ...

layout: {
   padding: {
      left: 10
   }
}

ᴡᴏʀᴋɪɴɢ ᴇxᴀᴍᴘʟᴇ ⧩

var ctx = document.getElementById('c').getContext('2d');
var myChart = new Chart(ctx, {
   type: 'bar',
   data: {
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
      datasets: [{
         label: 'Profit',
         data: [666666, 777777, 888888, 999999, 1100000],
         backgroundColor: ['#30799f', '#ac51c3', '#4ba57b', '#e3297d', '#e35c32'],
         borderColor: ['#30799f', '#ac51c3', '#4ba57b', '#e3297d', '#e35c32'],
         borderWidth: 1
      }]
   },
   options: {
      legend: { display: false },
      responsive: false,
      layout: {
         padding: {
            left: 10 //set as you wish
         }
      },
      scales: {
         yAxes: [{
            ticks: {
               stepSize: 100000,
               callback: function(value) {
                  var ranges = [
                     { divider: 1e6, suffix: 'M' },
                     { divider: 1e3, suffix: 'k' }
                  ];
                  function formatNumber(n) {
                     for (var i = 0; i < ranges.length; i++) {
                        if (n >= ranges[i].divider) {
                           return (n / ranges[i].divider).toString() + ranges[i].suffix;
                        }
                     }
                     return n;
                  }
                  return '$' + formatNumber(value);
               }
            }
         }]
      }
   }
});
<script src="https://cdnjs.cloudflare./ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="c" width="350" height="200"></canvas>

发布评论

评论列表(0)

  1. 暂无评论