首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular2-highcharts日期时间类型和点不重合

angular2-highcharts日期时间类型和点不重合
EN

Stack Overflow用户
提问于 2017-08-14 19:56:17
回答 2查看 987关注 0票数 0

我有以下选项:

代码语言:javascript
复制
this.options = {
      title: { text: 'simple chart' },
      series: [{
        data: [29.9, 71.5, 106.4, 129.2],
        pointInterval: 24 * 3600 * 1000,
        pointStart: Date.UTC(2015, 1, 12) // feb 12, 2015
      }],
      xAxis: {
        type: 'datetime',
        startOnTick:true,
        minPadding:0.015,
        dateTimeLabelFormats: {
          minute: '%H:%M',
          hour: '%H:%M',
          day: '%e. %b',
          week: '%e. %b',
          month: '%b \'%y',
          year: '%Y'
        }
      }
    };

当我选择datetime并点击按钮时:

代码语言:javascript
复制
buttonClicked() {
    let pointStart=new Date(this.dateStart);
    let year=pointStart.getFullYear();
    let month=pointStart.getMonth()+1;
    let day=pointStart.getDate();
    let hours=pointStart.getHours();
    let minutes=pointStart.getMinutes();

    this.chart.series[0].update({
      data: [32, 43, 53, 54],
      pointStart: Date.UTC(year, month, day, hours),
      pointInterval: 365 * 24 * 3600 * 1000
    }, true);
  }

我得到了以下结果:

因此,xAxis datetime类型与points不一致。有什么解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2017-08-14 21:03:03

默认情况下,xAxis记号与序列点不重合。

如果您希望轴刻度与点x值的日期相同,则可以使用tickPositionstickPositioner

演示:http://jsfiddle.net/vfphzyyf/

代码语言:javascript
复制
$(function() {
  var chart = Highcharts.chart('container', {
    xAxis: {
      type: 'datetime',
      tickPositioner: function() {
        var ticks = [];
        Highcharts.each(this.series, function(ser) {
          ticks = ticks.concat(ser.xData);
        });
        
        // for date format
        ticks.info = this.tickPositions.info;
        return ticks;
      }
    },
    series: [{
      data: [1, 2, 3, 4, 5, 6, 7],
      pointInterval: 36e5 * 24
    }]
  });

  $('#button').click(function() {
    chart.series[0].update({
      data: [32, 43, 53, 54],
      pointStart: Date.UTC(2017, 5, 5),
      pointInterval: 365 * 24 * 3600 * 1000
    }, true);
  });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script src="https://code.highcharts.com/highcharts.src.js"></script>
<div id="container" style="height: 400px; width: 700px;"></div>
<button id="button">update series</button>

票数 2
EN

Stack Overflow用户

发布于 2017-08-14 21:50:22

我像@Kacper Madej建议我的那样使用tickPositioner解决了这个问题。多亏了这个:https://github.com/highcharts/highcharts/issues/5437

在我使用TypeScript的Angular 2中,这是可行的:

代码语言:javascript
复制
tickPositioner: function (min, max) {
      var ticks = this.series[0].processedXData.slice(); // get point positions copy
      ticks.info = this.tickPositions.info;              // copy format for labels
      return ticks;                                      // return new ticks
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45674004

复制
相关文章

相似问题

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