格式化 highcharts.com 库的数据表

Format the data table of the highcharts.com library

提问人:Sergio241 提问时间:11/15/2023 更新时间:11/16/2023 访问量:66

问:

我在 Laravel 工作,我正在用 highcharts.com 库制作图表,我已经在用数千个值格式化图表, 但是这个库也有一个数据表,但是这个表没有用千值格式化,下面我分享我的代码

<div class="">
    <figure class="highcharts-figure">
        <div id="container"></div>
    </figure>
</div>

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script>
        var anio = {!! json_encode($anio) !!};
        var mes = {!! json_encode($mes) !!}; ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
        var venta = {!! json_encode($venta) !!}; ['1356940858.000000', '1945419126.000000', '934706589.000000', '1803607453.000000', '78415027.000000']


        venta = venta.map(function(value) {
            return parseFloat(value);
        });

        Highcharts.setOptions({
            lang: {
                thousandsSep: ','
            }
        });

        Highcharts.chart('container', {
            chart: {
                type: 'column'
            },
            title: {
                text: 'Ventas Mensuales',
                align: 'left',
                style: {
                    fontSize: '16px'
                }
            },
            xAxis: {
                categories: mes, // Uses the JavaScript array "mes" for month names
                crosshair: true,
                accessibility: {
                    description: 'Meses'
                }
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Ventas Mensuales'
                },
                labels: {
                    format: '{value:,.0f}'
                }
            },
            tooltip: {
                valueSuffix: ' (COP)'
            },
            plotOptions: {
                column: {
                    pointPadding: 0.2,
                    borderWidth: 0,
                    dataLabels: {
                        enabled: true,
                        formatter: function() {
                            return '$' + Highcharts.numberFormat(this.y, 0);
                        }
                    }
                }
            },
            series: [{
                name: 'Ventas',
                data: venta
                // data: valoresY
            }],
            data: {
                table: 'datatable'
            },
            exporting: {
                tableCaption: "Tabla de Ventas Mensuales"
            }

        });


    </script>

只是这个链接是生成数据表的链接,接下来我分享它的外观图像<script src="https://code.highcharts.com/modules/export-data.js"></script>

成像 1

成像 2

销售值是我想在数据表中以千为单位显示的值

JavaScript Laravel HighCharts 数据表

评论

0赞 magdalena 11/15/2023
嗨,@sergio241,只是为了确认,您能否指定表格的首选格式:1356940858.000000 或其他格式?
0赞 Sergio241 11/15/2023
我想要的格式是带有千位的数字示例:(1580 到 1,580)、(5895785 到 5,895,785)。1356940858.000000 至 1,356,940,858
0赞 magdalena 11/16/2023
感谢您的澄清 - 我添加了答案!

答:

0赞 magdalena 11/16/2023 #1

您可以通过添加事件来实现此目的,该事件将修改表中的值。请看以下示例:

let H = Highcharts;

H.addEvent(H.Chart, 'aftergetTableAST', function(e) {
  e.tree.children[2].children.forEach(function(row) {
    row.children.forEach(function(cell, i) {
      if (i !== 0) {
        let num = parseFloat(cell.textContent.replace(',', ''));
        if (!isNaN(num)) {
          cell.textContent = num.toLocaleString();
        }
      }
    });
  });
});

演示:https://jsfiddle.net/BlackLabel/yoqzvfp9/