Несколько меток для нескольких наборов данных в диаграмме. js - PullRequest
1 голос
/ 30 марта 2020

Я использую диаграмму. js в ответ на создание линейных диаграмм. Я должен показать данные дня, месяца и года. В течение дня у меня разные метки и данные, в течение месяца у меня разные метки и данные, а в течение года у меня также разные метки и данные. Я могу добавить несколько наборов данных, и это работает нормально, но когда я пытаюсь добавить несколько меток, это не сработало. Пожалуйста помоги. Вот мой код.

Демонстрация живого кода: https://codesandbox.io/s/objective-bird-8owf1

import {Line} from 'react-chartjs-2';

const checkinsData={
    labels:['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'],
    datasets:[
        {
        label:"Day",
        backgroundColor:"blue",
        borderColor:'#333',
        borderWidth:2,
        lineTension:0.1,
        fill:true,
        data:[4,5,6,7,8,9,10,11,12,1,2,3,4]

        },
        {
            label:"Week",
        backgroundColor:"green",
        borderColor:'#333',
        borderWidth:2,
        lineTension:0.1,
        fill:true,
        labels:['Sun','Mon','Tue','Web','Thu','Fri','Sat'],
        data:[1,2,3,4,5,6,7]
        },
        {
            label:"Month",
        backgroundColor:"red",
        borderColor:'#333',
        borderWidth:2,
        lineTension:0.1,
        fill:true,
        labels:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
        data:[1,2,3,4,5,6,7,8,9,10,11,12]
        }


    ]
}



<div className="col-md-8  default-shadow bg-white pd-30-0 border-radius-10 align-center">
                    <Line
                data={checkinsData}
                options={
                    {
                        title:{
                            text:'Total Check-ins',
                            fontSize:20,
                            display:true
                        },
                        legend:{
                            display:true,
                            position:'top'
                        }
                    }
                }
                />
                    </div>


Ответы [ 3 ]

1 голос
/ 31 марта 2020

Ваша ось X должна быть постоянной. Таким образом, вы не можете иметь более одного вида данных. В вашем случае вы хотите, чтобы время, день недели и месяц назывались по оси X одновременно, что невозможно на одном графике. Вы можете сгенерировать три графика или заполнить разные наборы данных на одном графике, вызывая события (например, click et c).

Что я имею в виду, когда нажата кнопка дня, набор данных для дня будет заполняться метки, '4 P.M', '5 P.M', '6 P.M' , когда месяц нажат, набор данных для месяца с метками 'jan', 'feb' et c должно быть заполнено

0 голосов
/ 02 апреля 2020

Вот рабочий код следующего вопроса. Я использовал один набор меток и обновлял его по нажатию кнопки. Аналогичным образом я обновил наборы данных.


import React from 'react';

import {Line} from 'react-chartjs-2';


const checkinsData={
    labels:['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'],
    datasets:[
        {
        label:"Day",
        backgroundColor:"blue",
        borderColor:'#333',
        borderWidth:2,
        lineTension:0.1,
        fill:true,
        data:[4,5,6,7,8,9,10,11,12,1,2,3,4]

        }


    ]
}




class CheckinGraph extends React.Component{
    constructor(props)
    {
        super(props)
        this.state={
            key: Date.now()


        }
        this.setDayData=this.setDayData.bind(this);
        this.setWeekData=this.setWeekData.bind(this);
        this.setMonthData=this.setMonthData.bind(this);
    }

    setDayData=function() {
        checkinsData.datasets.backgroundColor="blue";
        checkinsData.labels=['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'];
        checkinsData.datasets[0].data=[4,5,6,7,8,9,10,11,12,1,2,3,4];

        this.setState({ key: Date.now() });

    }
    setWeekData=function()
    {
        checkinsData.datasets.backgroundColor="green";
        checkinsData.labels=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
        checkinsData.datasets[0].data=[40,50,16,18,80,29,10];

        this.setState({ key: Date.now() });
    }
    setMonthData=function()
    {
        checkinsData.datasets.backgroundColor="purple";
        checkinsData.labels=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
        checkinsData.datasets[0].data=[100,120,200,256,560,178,280,190,370,100,300,200];

        this.setState({ key: Date.now() });
    }

    render()
    {
        return(
            <div className="col-md-12  default-shadow bg-white pd-30-0 border-radius-10 align-center">
                <ul className="list list-inline graph-label-list">
                    <li className="list-inline-item" onClick={this.setDayData}>
                        Day
                    </li>
                    <li className="list-inline-item" onClick={this.setWeekData}>
                        Week
                    </li>
                    <li className="list-inline-item" onClick={this.setMonthData}>
                        Month
                    </li>

                </ul>

            <Line
            redraw
        data={checkinsData}
        options={
            {
                title:{
                    display:false
                },
                legend:{
                    display:false
                }

            }
        }
        />
            </div>

        )
    }
}

export default CheckinGraph;


0 голосов
/ 30 марта 2020

Вы неправильно указали «Jun», пожалуйста, будьте последовательны в использовании кавычек. Просто исправьте «Jun» на «Jun», и все должно работать.

Бонус, пожалуйста, посмотрите некоторые стили кодирования:

Google JavaScript Руководство по стилю, Airbnb JavaScript Руководство по стилю et c.

...