【问题标题】:Chart js x-axis values getting repeated twice图表js x轴值重复两次
【发布时间】:2017-09-16 16:29:21
【问题描述】:

我正在使用以下代码使用图表 js 插件生成折线图,其中我面临 x 轴值重复两次的问题。

function newDate(days) {
    return moment().add(days, 'd').format('MM/DD');
}

var painChartContext = document.getElementById('pain_chart');
    var painChart = new Chart(painChartContext, {
        type: 'line',
        data: {
            labels: [newDate(-7), newDate(-6), newDate(-5), newDate(-4), newDate(-3), newDate(-2), newDate(-1)],
            datasets: [{
                label: "Pain",
                data: [8, 9, 7, 3, 10, 3, 4],
                fill: false,
                borderColor: '#b71705',
                spanGaps: true
            }]
        },
        options: {
            scales: {
                xAxes: [{
                    type: 'time',
                    time: {
                        displayFormats: {
                            'millisecond': 'MM/DD',
                            'second': 'MM/DD',
                            'minute': 'MM/DD',
                            'hour': 'MM/DD',
                            'day': 'MM/DD',
                            'week': 'MM/DD',
                            'month': 'MM/DD',
                            'quarter': 'MM/DD',
                            'year': 'MM/DD',
                        },
                        min: '04/13',
                        max: '04/19'
                    }                 
                }],
            },
        }
    });

正如我上面提到的,这给了我下面的图表,其中 x 轴日期值重复了两次。

同样在我的控制台中,我收到了关于时刻 js 的警告消息;

Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.

我认为是因为这行代码;

function newDate(days) {
    return moment().add(days, 'd').format('MM/DD');
}

请任何人为此提供解决方案,谢谢。

【问题讨论】:

    标签: javascript momentjs chart.js


    【解决方案1】:

    因此,chartjs 正在动态创建 x 轴标签,并决定它可以每天显示两个标签,当格式化时最终显示两个相同的日期。

    将新字段unit 传递给time 对象并将其设置为day。这将导致图表在时间范围内每天只显示一个刻度。 (example fiddle)

    options: {
            scales: {
                xAxes: [{
                    type: 'time',
                    time: {
                         unit: 'day',
                    }                 
                }],
            },
        }
    

    【讨论】:

    • 这个答案有效,但如果我的 x 轴不是日期,它们是数字怎么办?而且我仍然希望所有重复的数字不显示?
    • @HarshPhoujdar 你有没有发现,如果有的话?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2019-04-13
    相关资源
    最近更新 更多