【问题标题】:Anychart - Stock - Problem with correct date displayAnychart - 股票 - 日期显示正确的问题
【发布时间】:2019-03-28 22:48:22
【问题描述】:

我在 Angular 中使用 AnyChart(股票图表)显示正确的日期时间时遇到问题。

有时 AnyChart 显示时间正确,但有时却不正确 - 我无法理解它取决于什么。

日期时间的错误格式是 '05 28 Mar 2019' 和相同的代码是 28 Mar 2019, 05:00

我已经尝试将日期与时间一起用作字符串、日期和时间戳。

有时刻度大小小于 500 是可以的。有时即使有几个刻度也不起作用。

有时当我放大图表时它会起作用。

代码示例:

draw(tickData: TickData, tickForChart: any[], container: ElementRef) {
  const table = AnyCharts.data.table();
  table.addData(tickForChart);

  const mapping = table.mapAs({
    x: 0,
    open: 1,
    high: 2,
    low: 3,
    close: 4
  });

  const chart = AnyCharts.stock();

  const prices = chart.plot(0).candlestick(mapping);
  prices.name(tickData.market.marketName);
  prices.risingStroke('#3ba158');
  prices.risingFill('#3ba158');
  prices.fallingStroke('#fa1a20');
  prices.fallingFill('#fa0f16');

  chart.plot(0).xGrid().enabled(true);
  chart.plot(0).yGrid().enabled(true);
  chart.plot(0).yGrid().stroke("#dee2e6");

  chart.title(this.getMarketName(tickData));
  chart.container(container.nativeElement);
  chart.scroller(true);
  chart.draw();
  container.nativeElement.style.height = '600px';
  return chart;
}

有人遇到过同样的问题吗?我该如何解决?

另外,我附上了格式错误的图片。

wrong formatting

正确:

Correct formatting

例如,它适用于数据:

['2019-03-28T05:00:00', 511.53, 514.98, 505.79, 506.40],
['2019-03-28T05:30:00', 512.53, 514.88, 505.69, 510.34],
['2019-03-28T06:00:00', 511.83, 514.98, 505.59, 507.23],
['2019-03-28T06:30:00', 511.22, 515.30, 505.49, 506.47],
...

但数据失败:

 ['2015-12-24T08:13:00', 511.53, 514.98, 505.79, 506.40],
 ['2015-12-24T09:13:00', 512.53, 514.88, 505.69, 510.34],
 ['2015-12-24T10:13:00', 511.83, 514.98, 505.59, 507.23],
 ['2015-12-24T11:13:00', 511.22, 515.30, 505.49, 506.47]
 ...

【问题讨论】:

  • 请提供您的代码的 sn-p,以便于排除故障
  • 我添加了代码示例和图片。

标签: angular datetime time anychart


【解决方案1】:

这是因为您以不同的格式设置日期。如果您不仅想显示日期还想显示时间,您应该让所有 x 值都有小时、分钟等。请检查sample

【讨论】:

  • 我设置的数据始终具有相同的日期时间格式。甚至,当数据只有几个小时时,我有零值的分钟和秒。就像我在主题帖子中展示的那样,我对两个数据集使用了相同的格式,得到了不同的结果。虽然,我在您的示例中注意到,有时图表上根本没有时间,有时会再次出现错误的格式。请尝试在示例的开头添加两个值:['2015-12-24T08:13:00', 511.53, 514.98, 505.79, 506.40], ['2015-12-24T09:13:00', 512.53 , 514.88, 505.69, 510.34]
  • 是的,Dmitry,这是默认行为。根据给定点之间的间隔选择格式。并且这个间隔是自动计算的。这里我们得到'full_year_hour':'HH dd MMM yyyy'。但是我们可以像这样格式化工具提示标题中的日期:anychart.format.outputDateTimeFormat('dd MMM yyyy HH:mm:ss'); tooltip.titleFormat(function () { return anychart.format.dateTime(this.x) }); 在此处查看示例:playground.anychart.com/tHNaoDAh 了解有关格式化的更多信息:api.anychart.com/anychart.format#outputDateTimeFormat
  • tooltip.titleFormat 的建议真的很有帮助!非常感谢!
【解决方案2】:

您是否为标签应用任何格式设置?请向我们提供代码,让我们对其进行审核。在任何情况下,问题都可以通过格式化设置来解决。例如,您可以使用以下几行来设置 xAxis 标签的格式:

this.chart.plot(0).xAxis().labels().format('{%tickValue}{dateTimeFormat:dd MMM yyyy hh:mm}');
this.chart.plot(0).xAxis().minorLabels().format('{%tickValue}{dateTimeFormat:dd MMM yyyy hh:mm}');

【讨论】:

  • 感谢您的回复。但是,不幸的是,它对我不起作用。我仍然有相同的结果。我刚刚添加了代码示例和图像以更准确地描述主题帖子。是的,我尝试过使用不同的格式,但结果是一样的。
  • 当我用日期时间替换某些日期时,我在操场playground.anychart.com/docs/v8/samples/STOCK_Data_01 遇到了同样的问题。例如,将数据数组中的第一个值(2015-12-24 替换为 2015-12-24T23:13:00)将重现我的问题。此外,我检查了所有传入的数据 - 它们都是正确的,并且从后端格式化良好
  • 感谢您的截图!现在我发现我们一开始没有正确理解您,问题与工具提示标题有关。您可以使用 titleFormat 函数解决它。只需将以下行添加到您的代码chart.tooltip().titleFormat('{%x}{dateTimeFormat:dd MMM yyyy HH:mm}');。就像下面的示例中所示 - playground.anychart.com/5QrPgf3D
猜你喜欢
  • 1970-01-01
  • 2018-03-16
  • 2021-06-11
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多