首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >顶点图表工具提示格式化程序:如何将数字转换为字符串

顶点图表工具提示格式化程序:如何将数字转换为字符串
EN

Stack Overflow用户
提问于 2019-10-03 05:51:05
回答 2查看 13.5K关注 0票数 5

我试图在工具提示中显示直线图的y值(顶部图表)。原始数据以字符串格式设置为系列{'8:50 AM','11:00 AM','9:02 AM‘.},但它们显示为'8','11',’9‘.在工具提示中,以数字格式舍入。我不明白为什么字符串数据是由自己转换和舍入的。我用“toString”来展示全文('8:50 AM','11:00 AM','9:02 AM‘……)在工具提示格式化程序中,但是它没有工作。有什么建议吗?

代码语言:javascript
复制
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();
       }
    }
  }
 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-03 11:51:19

图表要求为y提供一个数字。

如果提供了一个字符串,它将尝试使用parseFloat或类似的方法将其解析为一个数字。

这就是为什么数字是四舍五入的。

代码语言:javascript
复制
parseFloat('8:50 AM') = 8

因此,如果您有类似于'1:00 PM'的内容,则不会得到所需的行。

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

我们可以这样做,用日期和时间创建一个新的日期。

然后,只使用日期部分创建另一个日期,并从前面的日期中减去它。

我们将把图表数据保存在一个变量中。

代码语言:javascript
复制
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'}];

然后把它映射到图表上。

代码语言:javascript
复制
  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};
  })

至于工具提示,我们可以使用系列参数从原始数据中提取索引.

代码语言:javascript
复制
    formatter: function(value, series) {
      // use series argument to pull original string from chart data
      return chartData[series.dataPointIndex].y;
    }

看下面的工作片段..。

代码语言:javascript
复制
$(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();
});
代码语言:javascript
复制
<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>

票数 5
EN

Stack Overflow用户

发布于 2022-08-04 08:53:11

您还可以使用以下格式自定义标题和值

代码语言:javascript
复制
tooltip: {
      y: {
        formatter: function (val) {
          return "Count: " + val
        },
        title: {
          formatter: function (seriesName) {
            return seriesName + "<br/>-------------------<br/>"
          },
        },
      },
    },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58213009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档