Выровняйте 2 диаграммы (диаграмма p ie, столбчатая диаграмма) рядом - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь отобразить эти диаграммы рядом, с одинаковой высотой для 2-х div и разместить 2 диаграммы внутри. Я стараюсь использовать жесткий код css для каждого: "style =" height: 40vh; width: 40vw "" но если я изменю экран, они больше не будут на той же высоте ............................... .................................................. .............

Это код для p ie диаграммы:

<div id="canvas-holder" style="height:40vh; width:40vw">
        <canvas id="chart-area"></canvas>
    </div>
    <script>
        var view_DA = JSON.parse('@DATA_QUERIED');
        var duyanh_lab = [];
        var duyanh_data = [];
        for (var i = 0; i < view_DA.length; i++) { duyanh_lab.push(view_DA[i].ZONE_NAME); };
        for (var i = 0; i < view_DA.length; i++) { duyanh_data.push(view_DA[i].ZONE_VALUE); };
        var config = {
            type: 'pie',
            data: {
                datasets: [{
                    data: duyanh_data,
                    backgroundColor: [
                    'dark khaki',
                    'khaki',
                    'olive',
                    'yellow',
                    'yellow green',
                    'dark olive green',
                    'olive drab',
                    'lawn green',


                    ],
                    label: 'Dataset 1'
                }],
                labels: duyanh_lab
            },
            options: {
                responsive: true,


            }
        };
        $(document).ready(function () {
            var ctx = document.getElementById('chart-area').getContext('2d');
            window.myPie = new Chart(ctx, config);

        });

    </script>

**and bar-char:** 




    <div id="container" style="height:40vh; width:40vw">
    <canvas id="canvas"></canvas>
</div>
<script>
    var view_DA2 = JSON.parse('@DATA_QUERIED');
    var duyanh_lab = [];
    var duyanh_data = [];
    for (var i = 0; i < view_DA2.length; i++) { duyanh_lab.push(view_DA2[i].ZONE_NAME); };
    for (var i = 0; i < view_DA2.length; i++) { duyanh_data.push(view_DA2[i].ZONE_VALUE); };
    var barChartData = {

        labels: duyanh_lab,
        datasets: [{
            label: 'Thời gian truy cập',
            backgroundColor: '#FF6384',
            borderColor: '#FF6384',
            borderWidth: 2,
            hoverBackgroundColor: '#FF6384',
            hoverBorderColor: '#FF6384',
            data: duyanh_data,
        }],
    };

    $(document).ready(function () {
        var ctx = document.getElementById('canvas').getContext('2d');
        window.myBar = new Chart(ctx, {
            type: 'bar',
            data: barChartData,
            options: {
                responsive: true,
                legend: {
                    position: 'top',
                },
                title: {
                    display: true,
                    text: 'Chart.js Bar Chart'
                }
            }
        });
    });
</script>
<div id="container" style="width: 75%;">
    <canvas id="canvas"></canvas>
</div>
<script>
    var view_DA2 = JSON.parse('@DATA_QUERIED');
    var duyanh_lab = [];
    var duyanh_data = [];
    for (var i = 0; i < view_DA2.length; i++) { duyanh_lab.push(view_DA2[i].ZONE_NAME); };
    for (var i = 0; i < view_DA2.length; i++) { duyanh_data.push(view_DA2[i].ZONE_VALUE); };
    var barChartData = {

        labels: duyanh_lab,
        datasets: [{
            label: 'Thời gian truy cập',
            backgroundColor: [
                'red'
            ],
            borderColor: 'red',
            borderWidth: 2,
            data:
                duyanh_data,

        }],
    };

    $(document).ready(function () {
        var ctx = document.getElementById('canvas').getContext('2d');
        window.myBar = new Chart(ctx, {
            type: 'bar',
            data: barChartData,
            options: {
                responsive: true,
                legend: {
                    position: 'top',
                },
                title: {
                    display: true,
                    text: 'Chart.js Bar Chart'
                }
            }
        });
    });
</script>

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вы захотите использовать flexbox, чтобы все правильно выровнять. Используйте классы, чтобы повторно использовать свой css повсюду, и вам будет хорошо go =)

*{
    box-sizing: border-box;
}

.container {
    width: 90%;
    margin: auto;
}

.main_wrapper{
    background-color: lightblue;
    display: flex;
    flex-wrap: row;
    justify-content: center;
    align-items: center;
    height: 900px;
}
.canvas_wrapper{
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    width: 100%;
    background-color: aquamarine;
}
.canvas{
    width: 100%;
    height: auto;
    border: 1px solid black;
}
.title{
    font-size: 3vw;
}
<div class="container">

    <div class="main_wrapper">

    <!--Canvas 1-->
    
    <div class="canvas_wrapper">
        <h1 class="title">main canvas</h1>
        <canvas class="canvas chart-area"></canvas>
    </div>

    <!--Canvas 2-->
    
    <div class="canvas_wrapper">
        <h1 class="title">second canvas</h1>
        <canvas class="canvas chart-area"></canvas>
    </div>

    <!--Canvas 3-->
    
    <div class="canvas_wrapper">
        <h1 class="title">third canvas</h1>
        <canvas class="canvas chart-area"></canvas>
    </div>
   

    </div>

</div>

Это то, что вы искали?

0 голосов
/ 17 июня 2020

Попробуйте добавить display: flex; к своему стилю:

<div id="canvas-holder" style="height:40vh; width:40vw; display: flex;">

По умолчанию flex-direction равно row.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...