min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Chart.js バージョン3のグラフに数値(項目ラベル)を表示させるには plugins の文字列を2つ書く必要がある

ハピタス登録で1,000円分になるURL

その買うを、もっとハッピーに。|ハピタス

 

Chart.js バージョン3で項目ラベルが表示されない!

できた!

めっっっっちゃ苦労したわ。

kumatech-lab.com

 

こうやる

まずは<head>で chartjs-plugin-datalabels を設定してやる必要がある。

15行目がそれ。

<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script>

 

次にこう。

↑317行目 myChartインスタンスを定義するところ(ctx云々かくところ)で

321〜323行目 このpluginsの記述が必須!

 かつ

↓400行ここ(optionsの中!)でもう一回pluginsの記述が必須!

406行目〜413行目の記述を書いてあげると…

こうなる!

グラフに数値がプロットされてる!

ほんっと苦労した!

 

Chart.js作ったやつVersion2から3で仕様変えすぎ!アホか!

これだからjavascript好きになれん!でも良かった!!!

 

コピペ用

<HTML>
<HEAD>
<style>
.box select{
/* width: 100px;
width: 500px; 
height: 50px */
border: 1px solid;
font-size: 30px;
}
</style>


<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.0/chart.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script>


<div style="width:100%">
    <canvas id="canvas"></canvas>
</div>

<!--
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js">
<script src="https://unpkg.com/chart.js-plugin-labels-dv@3.0.5/dist/chartjs-plugin-labels.min.js"</script>
<div class="box">
<select onchange="set_img(this.selectedIndex)">
    <script language=javascript>
        for(nn=0;nn<list_csvv.length;nn++) {
            // document.write("<option>" + list_csvv[nn][1]);
            document.write("<option>" + list_csvv[nn]);
        }
    </script>
</select>
</div>
-->


<hr>
<div class="box" align="center">
<!-- <select id="csv-select"> -->
<!-- <label for="csv-select2">選択1</label> -->
<select id="csv-select2" onchange="myFunction2()">
    <option value="201903_000425650_看護師保健師等.csv">2019年03月 看護師保健師等</option>
    <option value="202006_000689986_看護師保健師等.csv">2020年06月 看護師保健師等</option>
    <option value="202007_000705177_看護師保健師等.csv">2020年07月 看護師保健師等</option>
    <option value="202008_000722012_看護師保健師等.csv">2020年08月 看護師保健師等</option>
    <option value="202009_000740925_看護師保健師等.csv">2020年09月 看護師保健師等</option>
    <option value="202010_000759466_看護師保健師等.csv">2020年10月 看護師保健師等</option>
    <option value="202011_000778708_看護師保健師等.csv">2020年11月 看護師保健師等</option>
    <option value="202012_000803250_看護師保健師等.csv">2020年12月 看護師保健師等</option>
    <option value="202101_000826249_看護師保健師等.csv">2021年01月 看護師保健師等</option>
    <option value="202102_000844169_看護師保健師等.csv">2021年02月 看護師保健師等</option>

    <option value="202103_000862002_看護師保健師等.csv">2021年03月 看護師保健師等</option>
    <option value="202104_000880611_看護師保健師等.csv">2021年04月 看護師保健師等</option>
    <option value="202105_000905235_看護師保健師等.csv">2021年05月 看護師保健師等</option>
    <option value="202106_000928183_看護師保健師等.csv">2021年06月 看護師保健師等</option>
    <option value="202107_000952417_看護師保健師等.csv">2021年07月 看護師保健師等</option>
    <option value="202108_000977250_看護師保健師等.csv">2021年08月 看護師保健師等</option>
    <option value="202109_000999233_看護師保健師等.csv">2021年09月 看護師保健師等</option>
    <option value="202110_001023796_看護師保健師等.csv">2021年10月 看護師保健師等</option>
    <option value="202111_001048584_看護師保健師等.csv">2021年11月 看護師保健師等</option>
    <option value="202112_001075381_看護師保健師等.csv">2021年12月 看護師保健師等</option>
    <option value="202201_001102759_看護師保健師等.csv">2022年01月 看護師保健師等</option>
    <option value="202202_001120375_看護師保健師等.csv">2022年02月 看護師保健師等</option>
    <option value="202203_001139041_看護師保健師等.csv">2022年03月 看護師保健師等</option>
    <option value="202204_001162568_看護師保健師等.csv">2022年04月 看護師保健師等</option>
    <option value="202205_001188058_看護師保健師等.csv">2022年05月 看護師保健師等</option>
    <option value="202206_001209322_看護師保健師等.csv">2022年06月 看護師保健師等</option>
    <option value="202207_001233778_看護師保健師等.csv">2022年07月 看護師保健師等</option>
    <option value="202208_001260287_看護師保健師等.csv">2022年08月 看護師保健師等</option>
    <option value="202209_001284855_看護師保健師等.csv">2022年09月 看護師保健師等</option>
    <option value="202210_001312912_看護師保健師等.csv">2022年10月 看護師保健師等</option>
    <option value="202211_001338172_看護師保健師等.csv">2022年11月 看護師保健師等</option>
    <option value="202212_001367794_看護師保健師等.csv" selected>2022年12月 看護師保健師等</option>
</select>
</div>
<p></p>
<div class="box" align="center">
<select id="csv-select" onchange="myFunction()">
    <!--
    <option value="sample2.csv">sample2.csv</option>
    <option value="sample3.csv">sample3.csv</option>
    <option value="202210_001367794_うちIT関連職業.csv">202210_001367794_うちIT関連職業</option>
    <option value="202211_001367794_うちIT関連職業.csv">202211_001367794_うちIT関連職業</option>
    <option value="202212_001367794_うちIT関連職業.csv">202212_001367794_うちIT関連職業</option>
    <option value="202201_001102759_うちIT関連職業.csv">うちIT関連職業202201</option>
    <option value="202201_001102759_うちIT関連職業.csv">うちIT関連職業202201</option>
    -->
    <option value="201901_000396695_うちIT関連職業.csv">2019年01月 うちIT関連職</option>
    <option value="201902_000410251_うちIT関連職業.csv">2019年02月 うちIT関連職</option>
    <option value="201903_000425650_うちIT関連職業.csv">2019年03月 うちIT関連職</option>
    <option value="201904_000443514_うちIT関連職業.csv">2019年04月 うちIT関連職</option>
    <option value="201905_000460881_うちIT関連職業.csv">2019年05月 うちIT関連職</option>
    <option value="201906_000479362_うちIT関連職業.csv">2019年06月 うちIT関連職</option>
    <option value="201907_000498943_うちIT関連職業.csv">2019年07月 うちIT関連職</option>
    <option value="201908_000517333_うちIT関連職業.csv">2019年08月 うちIT関連職</option>
    <option value="201909_000537958_うちIT関連職業.csv">2019年09月 うちIT関連職</option>
    <option value="201910_000555573_うちIT関連職業.csv">2019年10月 うちIT関連職</option>
    <option value="201911_000573996_うちIT関連職業.csv">2019年11月 うちIT関連職</option>
    <option value="201912_000592376_うちIT関連職業.csv">2019年12月 うちIT関連職</option>
    <option value="202001_000609950_うちIT関連職業.csv">2020年01月 うちIT関連職</option>
    <option value="202002_000626520_うちIT関連職業.csv">2020年02月 うちIT関連職</option>
    <option value="202003_000639657_うちIT関連職業.csv">2020年03月 うちIT関連職</option>
    <option value="202004_000656018_うちIT関連職業.csv">2020年04月 うちIT関連職</option>

    <option value="201905_000460881_うちIT関連職業.csv">2019年05月 うちIT関連職</option>
    <option value="201906_000479362_うちIT関連職業.csv">2019年06月 うちIT関連職</option>
    <option value="201907_000498943_うちIT関連職業.csv">2019年07月 うちIT関連職</option>
    <option value="201908_000517333_うちIT関連職業.csv">2019年08月 うちIT関連職</option>
    <option value="201909_000537958_うちIT関連職業.csv">2019年09月 うちIT関連職</option>
    <option value="201910_000555573_うちIT関連職業.csv">2019年10月 うちIT関連職</option>
    <option value="201911_000573996_うちIT関連職業.csv">2019年11月 うちIT関連職</option>
    <option value="201912_000592376_うちIT関連職業.csv">2019年12月 うちIT関連職</option>
    <option value="202001_000609950_うちIT関連職業.csv">2020年01月 うちIT関連職</option>
    <option value="202002_000626520_うちIT関連職業.csv">2020年02月 うちIT関連職</option>
    <option value="202003_000639657_うちIT関連職業.csv">2020年03月 うちIT関連職</option>
    <option value="202004_000656018_うちIT関連職業.csv">2020年04月 うちIT関連職</option>
    <option value="202005_000673886_うちIT関連職業.csv">2020年05月 うちIT関連職</option>
    <option value="202006_000689986_うちIT関連職業.csv">2020年06月 うちIT関連職</option>
    <option value="202007_000705177_うちIT関連職業.csv">2020年07月 うちIT関連職</option>
    <option value="202008_000722012_うちIT関連職業.csv">2020年08月 うちIT関連職</option>
    <option value="202009_000740925_うちIT関連職業.csv">2020年09月 うちIT関連職</option>
    <option value="202010_000759466_うちIT関連職業.csv">2020年10月 うちIT関連職</option>
    <option value="202011_000778708_うちIT関連職業.csv">2020年11月 うちIT関連職</option>
    <option value="202012_000803250_うちIT関連職業.csv">2020年12月 うちIT関連職</option>
    <option value="202101_000826249_うちIT関連職業.csv">2021年01月 うちIT関連職</option>
    <option value="202102_000844169_うちIT関連職業.csv">2021年02月 うちIT関連職</option>
    <option value="202103_000862002_うちIT関連職業.csv">2021年03月 うちIT関連職</option>
    <option value="202104_000880611_うちIT関連職業.csv">2021年04月 うちIT関連職</option>
    <option value="202105_000905235_うちIT関連職業.csv">2021年05月 うちIT関連職</option>
    <option value="202106_000928183_うちIT関連職業.csv">2021年06月 うちIT関連職</option>
    <option value="202107_000952417_うちIT関連職業.csv">2021年07月 うちIT関連職</option>
    <option value="202108_000977250_うちIT関連職業.csv">2021年08月 うちIT関連職</option>
    <option value="202109_000999233_うちIT関連職業.csv">2021年09月 うちIT関連職</option>
    <option value="202110_001023796_うちIT関連職業.csv">2021年10月 うちIT関連職</option>
    <option value="202111_001048584_うちIT関連職業.csv">2021年11月 うちIT関連職</option>
    <option value="202112_001075381_うちIT関連職業.csv">2021年12月 うちIT関連職</option>
    <option value="202201_001102759_うちIT関連職業.csv">2022年01月 うちIT関連職</option>
    <option value="202202_001120375_うちIT関連職業.csv">2022年02月 うちIT関連職</option>
    <option value="202203_001139041_うちIT関連職業.csv">2022年03月 うちIT関連職</option>
    <option value="202204_001162568_うちIT関連職業.csv">2022年04月 うちIT関連職</option>
    <option value="202205_001188058_うちIT関連職業.csv">2022年05月 うちIT関連職</option>
    <option value="202206_001209322_うちIT関連職業.csv">2022年06月 うちIT関連職</option>
    <option value="202207_001233778_うちIT関連職業.csv">2022年07月 うちIT関連職</option>
    <option value="202208_001260287_うちIT関連職業.csv">2022年08月 うちIT関連職</option>
    <option value="202209_001284855_うちIT関連職業.csv">2022年09月 うちIT関連職</option>
    <option value="202210_001312912_うちIT関連職業.csv">2022年10月 うちIT関連職</option>
    <option value="202211_001338172_うちIT関連職業.csv">2022年11月 うちIT関連職</option>
    <option value="202212_001367794_うちIT関連職業.csv" selected>2022年12月 うちIT関連職</option>
</select>
<!--
<button id="load-csv-button">Load CSV</button>
-->
</div>
<a href="https://wordpress.kazunoriri.com/https-kazunoriri-com-wordpress-chart-js-bar-csv/" target="_blank">WordPress | CSVを読み込んでChart.jsの棒>グラフを描画する方法</a>
<br />

<br />
<a href="https://qiita.com/saka212/items/5714fa68deb44a185ec3">Chart.jsでグラフを更新するサンプル(ボタンをクリック)</a>
<!--
キャラ,HP,MP,ちから,すばやさ
ヨシヒコ,330,200,150,90
アリーナ,300,0,200,220
マーニャ,230,300,40,130j
ミネア,240,170,80,80

koumoku,YEARMM,JOBB,求人数,求職者数,求人倍率,一般求人数,一般求職者数,一般求人倍率,パート求人数,パート求職者数,パート求人倍率
秋田労働局,202212,うちIT関連職業,497,433,1.15,435,357,1.22,62,76,0.82
秋田,202212,うちIT関連職業,172,175,0.98,153,138,1.11,19,37,0.51
男鹿,202212,うちIT関連職業,7,9,0.78,2,6,0.33,5,3,1.67
能代,202212,うちIT関連職業,49,17,2.88,49,15,3.27,0,2,0
大館,202212,うちIT関連職業,46,20,2.30,43,14,3.07,3,6,0.50
鷹巣,202212,うちIT関連職業,6,9,0.67,6,8,0.75,0,1,0
大曲,202212,うちIT関連職業,41,23,1.78,33,18,1.83,8,5,1.60
角館,202212,うちIT関連職業,9,9,1.00,5,8,0.63,4,1,4.00
本荘,202212,うちIT関連職業,60,107,0.56,55,101,0.54,5,6,0.83
横手,202212,うちIT関連職業,57,24,2.38,39,17,2.29,18,7,2.57
湯沢,202212,うちIT関連職業,30,31,0.97,30,25,1.20,0,6,0
鹿角,202212,うちIT関連職業,20,9,2.22,20,7,2.86,0,2,0
-->

<script>
// window.onload = function() {
// window.onload = loadCsv('sample2.csv');
window.onload = loadCsv('sample3.csv');
// document.addEventListener("DOMContentLoaded", function() {
//     // ここに実行したい関数のコードを記述する
//     console.log("This function will run only once when the HTML page is loaded.");
//     loadCsv('sample2.csv');
// });

//@ // csv-selectまたはchartTitle2が変更された場合に、グラフのタイトルを更新する
//@ document.getElementById("csv-select").addEventListener("select", () => {
//@     console.log("Im title1");
//@     myChart.options.plugins.title.text = document.getElementById("csv-select").value;
//@     myChart.update();
//@ });
//@ 
//@ document.getElementById("csv-select2").addEventListener("select", () => {
//@     myChart.options.plugins.title.text = document.getElementById("csv-select2").value;
//@     myChart.update();
//@ });


function myFunction() {
    const selectedValue = document.getElementById('csv-select').value;
    if(myChart) {
        myChart.destroy();
    }

    loadCsv(selectedValue);
    //@ csv-selectまたはchartTitle2が変更された場合に、グラフのタイトルを更新する
    // グラフのタイトル更新
    // myChart.options.plugins.title.text = document.getElementById("csv-select").value;
    // myChart.options.plugins.title.text = selectedValue;
    // myChart.update();

    //- // うちIT関連職が選択された時は、看護師保健師はグレーアウトしたい
    //- let drop1 = document.getElementById("csv-select");
    //- let drop2 = document.getElementById("csv-select2");
    //- if (drop1.value == "1"){
    //-     drop2.disabled = true;
    //- } else {
    //-     drop2.disabled = false;
    //- }
}
function myFunction2() {
    const selectedValue2 = document.getElementById('csv-select2').value;
    if(myChart) {
        myChart.destroy();
    }
    loadCsv(selectedValue2);
    // myChart.options.plugins.title.text = document.getElementById("csv-select2").value;
    // myChart.options.plugins.title.text = selectedValue2;
    // myChart.update();
}

 

function loadCsv(CSVV) {
    // let キャラ = ;
    // let HPのデータ =
;
    // let MPのデータ = ;
    // let ちからのデータ =
;
    // let すばやさのデータ = ;
    let col_koumoku =
;
    let col_YEARMM = ;
    let col_JOBB =
;
    let col_KYUJINSU = ;
    let col_KYUSYOKU =
;
    let col_KYUJINRITU = ;
    let col_I_KYUJINSU =
;
    let col_I_KYUSYOKU = ;
    let col_I_KYUJINRITU =
;
    let col_P_KYUJINSU = ;
    let col_P_KYUSYOKU =
;
    let col_P_KYUJINRITU = ;

    // let csvPath = './sample1.csv'
    // let csvPath = './sample2.csv';
    let csvPath = CSVV;

    // リクエストreqの定義 オブジェクトの本体req
    let req = new XMLHttpRequest();
    req.open('get', csvPath, true);                                       // 1
    req.send(null);
    req.onload = function() {                                             // 2
        makeGraphData();
        drawGraph();

        function makeGraphData() {
            // まずは改行で分ける
            let reqArray = req.responseText.split('\n');                      // 3
            // reqArrayには
            // ヘッダデータ
            // 秋田,202212,うちIT関連職業,172,175,0.98,153,138,1.11,19,37,0.51
            // 男鹿,202212,うちIT関連職業,7,9,0.78,2,6,0.33,5,3,1.67
            // ...
            // 末尾まで が全部格納される
            
            reqArray.forEach((element) => {                                   // 4
                //  ROWW_DATA 行データ
                let ROWW_DATA = element.split(',')
                let indexYEARMM = reqArray[0].split(',').indexOf('YEARMM');
                let indexJOBB = reqArray[0].split(',').indexOf('JOBB');

                let indexKYUJINSU = reqArray[0].split(',').indexOf('求人数');
                let indexKYUSYOKU = reqArray[0].split(',').indexOf('求職者数');
                let indexKYUJINRITU = reqArray[0].split(',').indexOf('求人倍率');

                let indexKYUJINSU_I = reqArray[0].split(',').indexOf('一般求人数');
                let indexKYUSYOKU_I = reqArray[0].split(',').indexOf('一般求職者数');
                let indexKYUJINRITU_I = reqArray[0].split(',').indexOf('一般求人倍率');

                let indexKYUJINSU_P = reqArray[0].split(',').indexOf('パート求人数');
                let indexKYUSYOKU_P = reqArray[0].split(',').indexOf('パート求職者数');
                let indexKYUJINRITU_P = reqArray[0].split(',').indexOf('パート求人倍率');

                //配列にpushして突っ込んでる?
                //キャラ.push(ROWW_DATA[0]);
                col_koumoku.push(ROWW_DATA[0]);
                if(ROWW_DATA[indexKYUJINSU] !== undefined) {
                    col_KYUJINSU.push(Number(ROWW_DATA[indexKYUJINSU]));
                };
                if(ROWW_DATA[indexKYUSYOKU] !== undefined) {
                    col_KYUSYOKU.push(Number(ROWW_DATA[indexKYUSYOKU]));
                };
                if(ROWW_DATA[indexKYUJINRITU] !== undefined) {
                    col_KYUJINRITU.push(Number(ROWW_DATA[indexKYUJINRITU]));
                };
            });
            removeHeader()

            function removeHeader() {

                col_koumoku.shift();
                col_KYUJINSU.shift();
                col_KYUSYOKU.shift();
                col_KYUJINRITU.shift();
                // キャラ.shift();
                // HPのデータ.shift();
                // MPのデータ.shift();
                // ちからのデータ.shift();
                // すばやさのデータ.shift();
            };
        };

        function drawGraph() {
            let ctx = document.getElementById('canvas').getContext('2d');
            // let グラフ = new Chart(ctx, {
            // myGraph
            // var myG = new Chart(ctx, {
            // optionsドロップダウン選択時にmyChart.destroy必須
            window.myChart = new Chart(ctx, {
                type: 'bar',    // ここはbarのままにする2軸でも
                data: G_DATA,
                options: G_OPTION2,
                plugins: [
                    ChartDataLabels,
                ],

                // data: グラフのデータ,
                // options: グラフのオプション
                // options: G_OPTION
            });

        };

    };

    // var グラフのデータ = {
    var G_DATA = {
        // labels: キャラ,
        // ↓このlabelsでX軸の単位(秋田,男鹿,能代...)が描画される
        labels: col_koumoku,
        datasets: [
            // {
            //     //label: 'HP',
            //     label: 'col_koumoku',
            //     // data: HPのデータ,
            //     data: col_koumoku,
            //     borderColor     : "rgba(55,155,255,0.7)",
            //     backgroundColor : "rgba(55,155,255,0.5)",
            // },
            {
                type: 'bar',

                label: '求人数',
                // label: 'col_KYUJINSU',
                data: col_KYUJINSU,
                borderColor     : "rgba(0,0,255,0.7)",
                backgroundColor : "rgba(0,0,255,0.5)",
                // borderColor     : "rgba(255,100,133,0.7)",
                // backgroundColor : "rgba(255,100,133,0.5)",
                // 左軸に表示
                yAxisID: "y1",
                // yAxisID: "y-axis-1",
                // https://hotay-blog.com/codeigniter4-chartjs3x/
                // yAxisIDとyAxesIDの記述は、yAxisIDが正しい
                // yAxesIDだと、棒グラフの方が正しく表示されない
            },
            {
                type: 'bar',
                label: '求職者数',
                data: col_KYUSYOKU,
                borderColor     : "rgba(255,0,0,0.7)",
                backgroundColor : "rgba(255,0,0,0.5)",
                // borderColor     : "rgba(55,255,55,0.7)",
                // backgroundColor : "rgba(55,255,55,0.5)",
                yAxisID: "y1",
            },
            {
                type: 'line',
                label: '求人倍率(右軸)',
                data: col_KYUJINRITU,
                borderColor     : "rgba(0,0,255,0.3)",
                // borderColor     : "rgba(255,222,133,0.7)",
                //backgroundColor : "rgba(255,222,133,0.3)",
                backgroundColor     : "rgba(0,0,255,0.3)",
                tension: 0, //0なら直線、0.1以上は曲線
                fill: false, //直線からX軸までの範囲を塗りつぶすならtrue
                // 右軸に表示
                yAxisID: "y2",
                // pointRadius: 5,
                // pointHoverRadius: 7,
                // pointBackgroundColor: 'white',
                // pointBorderColor: 'rgb(75, 192, 192)',
                // pointHoverBackgroundColor: 'rgb(75, 192, 192)',
                // pointHoverBorderColor: 'white',
            },
        ],
    };

    // const G_OPTION2 = {
    // Chart.jsのVer2→3でyAxesの書き方が大きく変わった
    var G_OPTION2 = {
        responsive: true,
        plugins: {

            title:{
                display: true,
                // text: '職業別求人・求職バランスシート',
                text: '職業別求人・求職バランスシート ' + CSVV,
            },
            datalabels: {
                font: {
                    size: 20
                },
                formatter: function( value, context ){
                    return value.toString();
                }
            }
            //- labels: {
            //-     display: true
            //- },
            //- datalabels: {
            //-     anchor: 'end',
            //-     align: 'top',
            //-     font: {
            //-         weight: 'bold'
            //-     },
            //-     // formatter: function(value) {
            //-     //     return value;
            //-     // }
            //-     formatter: function(value, context) {
            //-         // return context.chart.data.labels[context.dataIndex];
            //-         return value;
            //-     },
            //- },
            // tooltips: {
            //     callbacks: {
            //         title: function (tooltipItem, data){
            //             return tooltipItem[0].label;
            //         },
            //         label: function (tooltipItem, data){
            //             return tooltipItem.value;
            //         }
            //     }
            // },
        },
        // Chart.js ver3 での書き方
        // http://www.kogures.com/hitoshi/javascript/chartjs/scale.html
        // https://blog.myntinc.com/2021/03/chartjs-ver3x.html
        scales: {
            y1: {
                type: "linear",
                position: "left",
                display: true,
                beginAtZero: true,
                // suggestedつけると認識されないChart.js_Ver3

                // suggestedMin: 0,
                // suggestedMax: 300,
                min: 0,
                max: 400,
                stepSize: 100,
                scaleLabel: {
                    display:true,
                    labelString:"人数",
                },
                grid: {
                    drawOnChartArea: false,
                },
                // id: "y-axis-1",
                ticks: {
                    callback: function(value){
                        return value+'人';
                    },
                    // suggestedMax: "300",
                    // suggestedMin: "0",
                    // stepSize: 100,
                    //beginAtZero: true,
                    // max: 150,
                    // max: 300,
                    // min: 0,
                },
                // scaleLabel: {
                //     display: true,
                //     // labelString: 'あたい'
                //     labelString: '人数'
                // }
            },
            y2: {
                type: "linear",
                position: "right",
                display: true,
                beginAtZero: true,
                min: 0,
                max: 4,
                stepSize: 1,
                // id: "y-axis-1",
                ticks: {
                    callback: function(value){
                        return value+'%';
                    },
                    // max: "4",
                    // min: "0",
                    // stepSize: 1,
                    //beginAtZero: true,
                    // max: 150,
                    // max: 300,
                    // min: 0,
                },

                // scaleLabel: {
                //     display: true,
                //     labelString: '有効求人倍率'
                // },
                grid: {
                    drawOnChartArea: true,
                },
            },
            // y2:{
            //     // 右軸
            //     id: "y-axis-2",
            //     // type: "linear",
            //     // 右を指定
            //     position: "right",
            //     // 目盛り
            //     ticks: {
            //         beginAtZero: true,
            //         max: 4,
            //         min: 0,
            //         stepsize: 1
            //     },
            //     // Y軸の目盛り(軸ラベル)
            //     scaleLabel: {
            //         display: true,
            //         // labelString: 'あたい'
            //         labelString: '有効求人倍率'
            //     },
            //     gridLines: {
            //         display: false
            //     },
            // }  // y -----
        }
    };
};

//# <hr>
//# <select id="csv-file-list">
//#     <option value="">-- CSVファイルを選択してください --</option>
//# </select>
//# 
//# <p id="selected-csv-file"></p>
//# // そもそもjavascriptでサーバ側にあるファイルの一覧を取得することはできない!
//# document.addEventListener("DOMContentLoaded", function() {
//# // document.addEventListener("DOMContentLoaded", function() {
//#     // console.log("Im here");
//#     // const fileList = ;
//#     // const xhr = new XMLHttpRequest();
//#     // xhr.open('GET', '.');
//#     // xhr.responseType = 'document';
//#     // xhr.onload = () => {
//#     //     const files = xhr.response.querySelectorAll('a');
//#     //     for (let i = 0; i < files.length; i++) {

//#     //         const fileName = files[i].getAttribute('href');
//#     //         if(/\.csv$/i.test(fileName)) {
//#     //             console.log(fileName);
//#     //             fileList.push(fileName);
//#     //         }
//#     //     }
//#     // }
//#     // // プルダウンに選択肢を追加する
//#     // const select = document.getElementById('csv-file-list');
//#     // for (let i = 0; i < fileList.length; i++) {
//#     //     const option = document.createElement('option');
//#     //     option.value = fileList[i];
//#     //     option.text = fileList[i];
//#     //     select.add(option);
//#     // }
//#     // // プルダウンで選択されたファイルを表示する
//#     // select.addEventListener('change', (event) => {
//#     //     const fileName = event.target.value;
//#     //     document.getElementById('selected-csv-file').textContent = fileName;
//#     // });
//# 
//# 
//#     // XMLHttpRequest object
//#     var xhr = new XMLHttpRequest();
//#     // 同じ階層にあるCSVファイルの一覧を取得する
//#     xhr.open("GET", "./", true);
//#     xhr.onreadystatechange = function() {
//#         console.log("Im here");
//#         if (xhr.readyState === 4 && xhr.status === 200) {
//#             // CSVファイル一覧を取得してプルダウンに追加する
//#             var fileList = xhr.responseText.split("\n");
//#             for (var i = 0; i < fileList.length; i++) {
//#                 // myREGX = /.*csv$/g;
//#                 myREGX = /.*csv$/i;
//#                 //if (fileList[i].match(/\.csv$/)) {
//#                 if (fileList[i].match(myREGX)) {
//#                     var option = document.createElement("option");
//#                     option.text = fileList[i];
//#                     option.value = fileList[i];
//#                     document.getElementById("csv-file-list").appendChild(option);
//#                 }
//#             }
//#         }
//#     };
//#     xhr.send();
//#     
//#     // プルダウンで選択されたファイル名を表示する
//#     document.getElementById("csv-file-list").addEventListener("change", function() {
//#         var selectedFile = this.value;
//#         document.getElementById("selected-csv-file").textContent = "選択されたファイル: " + selectedFile;
//#     });
//# });

//# 
//# 
//# //const list_csvv = [];
//# ////for (let i = 1; i<=12; i++){
//# //for (let j = 2019; j<=2022; j++) {
//# //    for (let i = 1; i<=12; i++){
//# //        console.log(i);
//# //        if(i < 10 ) {
//# //            const filename1 = `myKINRIROUKI03_24うちIT関連職業_00全体_${j}0${i}.csv`;
//# //            list_csvv.push(filename1);
//# //        } else {
//# //            const filename1 = `myKINRIROUKI03_24うちIT関連職業_00全体_${j}${i}.csv`;
//# //            list_csvv.push(filename1);
//# //        }
//# //    }
//# //}
//# 
//# 
//# 
//# 
//# const csvSelect = document.getElementById("csv-select");
//# // const loadCsvButton = document.getElementById("load-csv-button");
//# // const chartCanvas = document.getElementById("chart");
//# let chart = null;
//# 
//# // loadCsvButton.addEventListener("click", () => {
//# //       const selectedCsv = csvSelect.value;
//# //       console.log(selectedCsv);
//# //       loadCsv(selectedCsv);
//# // });


</script>

</HEAD>
</div>

<br><br>
</center>
</BODY>
</HTML>

 

 

 

 

 

 

 

 

 

その買うを、もっとハッピーに。|ハピタス