Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 图表js-Y轴上带有时间刻度的条形图,以小时和分钟为单位_Javascript_Charts_Chart.js_Momentjs_Duration - Fatal编程技术网

Javascript 图表js-Y轴上带有时间刻度的条形图,以小时和分钟为单位

Javascript 图表js-Y轴上带有时间刻度的条形图,以小时和分钟为单位,javascript,charts,chart.js,momentjs,duration,Javascript,Charts,Chart.js,Momentjs,Duration,我正在使用chartjs,现在我需要渲染一个持续时间 我需要有X轴上的类别和Y轴上的持续时间 有没有办法将x轴上的持续时间转换为: 40->40分钟 150->2:30(或其他格式,但y轴上的值以60为基数进行转换,以小时为单位转换分钟,而不是十进制!) 我试过了 scales: { yAxes: [{ type: 'time', time: { unit: 'minute',

我正在使用chartjs,现在我需要渲染一个持续时间

我需要有X轴上的类别和Y轴上的持续时间

有没有办法将x轴上的持续时间转换为:

40->40分钟

150->2:30(或其他格式,但y轴上的值以60为基数进行转换,以小时为单位转换分钟,而不是十进制!)

我试过了

scales: {

        yAxes: [{
                type: 'time',
            time: {
                unit: 'minute',
                displayFormats: {
                    hour: 'h:mm:ss a'
                }
            }
        }]

        //
    }
没有成功

这是我的全部代码

var canvas = document.getElementById("graficotest1");
var ctx = canvas.getContext("2d");
var myChart = new Chart(ctx, {
type: 'bar',
data: {

    labels: [
          'modo 1',
          'modo 2,
          'modo 13'
         ],
    datasets: [ 

        {
            label: '# Durata reale',
            data: [
              3100,
              615,
              705
            ],
            backgroundColor: 'rgba(255, 99, 132, 0.2)',
            borderColor: 'rgba(255,99,132,1)',
            borderWidth: 1,
            hoverBackgroundColor: 'red'
        },
        {
            label: '# Ore in',
            data: [
              0,
              0,
              465
            ],
            backgroundColor: '#DEF797',
            borderColor: 'rgba(255,99,132,1)',
            borderWidth: 1,
            hoverBackgroundColor: 'yellow'
        },

  ]
},
options: {
    scales: {

        //
        yAxes: [{
                type: 'time',
            time: {
                unit: 'minute',
                displayFormats: {
                    hour: 'h:mm:ss a'
                }
            }
        }]

        //
    },
    //
    title: {
        display: false,
        text: 'stat 1'
    },
    //scaleShowGridLines: false




}
});
我需要将图表中的所有值,如3100615705(分钟)转换为小时:分钟


谢谢你,我在网上查过了,有一个简单的方法可以做到这一点,我之所以使用这个方法是因为如果我将Y轴设置为最新,图形不会被渲染并抛出错误

请在下面找到用于实现日期Y轴的配置

var options = {
    scaleOverride: true,
    scaleSteps: 8,
    scaleStepWidth: 1800,
    scaleStartValue: 0,
    responsive: true,
    maintainAspectRatio: false,
    scaleLabel: function(valuePayload) {
        console.log(new Date(valuePayload.value  * 1000).toISOString());
      return new Date(valuePayload.value  * 1000).toISOString().substr(12, 7);
    },
    multiTooltipTemplate: function(valuePayload) {
      return valuePayload.datasetLabel + " " + new Date(valuePayload.value * 1000).toISOString().substr(12, 7)
    },
    title: {
        display: false,
        text: 'stat 1'
    }
  };
  var ctx = document.getElementById("canvas").getContext("2d");
  window.myLine = new Chart(ctx).Line(data, options);
Github上的以下问题包含了在Y轴上实现时间轴的漂亮方法

GITHUB问题:

下面的提琴包含修改后的代码,其中日期Y轴可见


jsiddle:

你好,谢谢你回答我的问题。我尝试了这个解决方案,但它似乎只适用于ChartJS v1,我使用的是最新版本2.6.0,并且axes格式不适用于您的代码。。。。。