charts - Apex 图表工具提示格式化程序 : how to convert number to string

标签 charts tooltip tostring formatter apexcharts

我试图在工具提示(apexcharts)中显示折线图的 y 值。原始数据在{'8:50 AM', '11:00 AM', '9:02 AM'...}系列中以字符串格式设置,但它们显示为'8', '11', '9 '...在工具提示中,以数字格式四舍五入。我不明白为什么字符串数据会自行转换和舍入。我使用“toString”在工具提示格式化程序中显示全文(“8:50 AM”、“11:00 AM”、“9:02 AM”...),但它不起作用。有什么建议吗?

var spark1 = {
  chart: {
    id: 'sparkline1',
    type: 'line',
    height: 200,
    sparkline: {
      enabled: true
    },
    group: 'sparklines'
  },
  series: [{
    name: 'wake-up time',
    data: [{x: '05/06/2014', y:'8:50 AM'}, {x: '05/07/2014', y:'11:00 AM'}, {x: '05/08/2014', y:'9:02 AM'}, {x: '05/09/2014', y:'10:47 AM'}]
  }],
  tooltip: {
    x: {
      show: false
    },
    y: {
      formatter: function(value){
      return value.toString();
       }
    }
  }
 }
}

最佳答案

图表需要为 y 提供一个数字。
如果提供了字符串,它将尝试使用 parseFloat 将其解析为数字。 ,或类似的东西。
这就是数字四舍五入的原因。

parseFloat('8:50 AM') = 8

所以如果你有类似 '1:00 PM' 的东西,您将无法获得所需的行。

相反,将值转换为真实日期,然后提取时间值。

我们可以通过创建一个包含日期和时间的新日期来做到这一点。
然后仅使用日期部分创建另一个日期并将其从前一个中减去。

我们将图表数据保存在一个变量中。
var chartData = [{x: '05/06/2014', y: '8:50 AM'}, {x: '05/07/2014', y: '11:00 AM'}, {x: '05/08/2014', y: '9:02 AM'}, {x: '05/09/2014', y: '10:47 AM'}];

然后将其映射为图表。
  data: chartData.map(function (row) {
    // create full date time
    var rowDate = new Date(row.x + ' ' + row.y);

    // subtract date only from full date time
    var rowTime = rowDate.getTime() - (new Date(row.x)).getTime();

    // return new data point
    return {x: row.x, y: rowTime};
  })

至于工具提示,我们可以使用 series 参数从原始数据中提取索引...
    formatter: function(value, series) {
      // use series argument to pull original string from chart data
      return chartData[series.dataPointIndex].y;
    }

请参阅以下工作片段...

$(document).ready(function() {
  var chartData = [{x: '05/06/2014', y: '8:50 AM'}, {x: '05/07/2014', y: '11:00 AM'}, {x: '05/08/2014', y: '9:02 AM'}, {x: '05/09/2014', y: '10:47 AM'}];

  var spark1 = {
    chart: {
      id: 'sparkline1',
      type: 'line',
      height: 200,
      sparkline: {
        enabled: true
      },
      group: 'sparklines'
    },
    series: [{
      name: 'wake-up time',
      data: chartData.map(function (row) {
        // create full date time
        var rowDate = new Date(row.x + ' ' + row.y);

        // subtract date only from full date time
        var rowTime = rowDate.getTime() - (new Date(row.x)).getTime();

        // return new data point
        return {x: row.x, y: rowTime};
      })
    }],
    tooltip: {
      x: {
        show: false
      },
      y: {
        formatter: function(value, series) {
          // use series argument to pull original string from chart data
          return chartData[series.dataPointIndex].y;
        }
      }
    }
  };

  var chart = new ApexCharts(
    document.getElementById('sparkline1'),
    spark1
  );

  chart.render();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<div id="sparkline1"></div>

关于charts - Apex 图表工具提示格式化程序 : how to convert number to string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213009/

相关文章:

excel - 使用 Apache POI 库在 Excel 工作表中添加饼图?

javascript - 如何在鼠标悬停时设置超时功能中停止动画

javascript - 我如何使用 jQuery 永远循环 Bootstrap 工具提示?

Javascript 工具提示不随鼠标移动而移动

excel - powershell 无法向 Excel 图表添加多个图例条目(系列)

excel - 在 Excel 用户窗体中显示 "live"图表数据

jquery - 数据表工具提示在第二页中不起作用。仅适用于第一页

java - 覆盖 Arrays.toString() 方法

java - 打印数组 - 重写 toString() 方法

java - Java 中的 ValueOf(80,8) 与 toString(80,8)