EChartsで表示する棒グラフに目盛りを表示したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 49

sato4000

score 28

EChartsで棒グラフを表示する際に、X軸の目盛りの間から棒を表示させたいと考えているのですが、下記ソースコードだと画面のサイズによって、目盛りの表示する箇所が棒の真ん中から表示されてしまいます。X軸の目盛りを固定で表示する方法はないでしょうか?

xAxis.boundaryGapをtrueにするだけではだめでした。

    xAxis: {
        name: '時間',
        type: 'category',
        boundaryGap: true,
        data: ['0:00','','', '3:00','','', '6:00','','', '9:00','','','12:00','','', '15:00','','', '18:00','','','21:00','','', '24:00']
    },
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 50%; min-height: 250px"></div>
      <div id="container2" style="height: 50%; min-height: 250px"></div>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/china.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/world.js"></script>
       <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=xfhhaTThl11qYVrqLZii6w8qE5ggnhrY&__ec_v__=20190126"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/bmap.min.js"></script>
       <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
       <script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
option = null;
option = {
    xAxis: {
        name: '日付',
        type: 'category',
        boundaryGap: true,
        data: ['7/1', '7/2', '7/3', '7/4', '7/5', '7/6', '7/7']
    },
    yAxis: {
        name: '歩数',
        type: 'value',
        splitNumber: 6
    },
    visualMap: {
            top: 10,
            right: 10,
            pieces: [{
                gt: 0,
                lte: 10000,
                color: '#9FA8DA'
            },{
                gt: 10000,
                color: '#1A237E'
            }],
            outOfRange: {
                color: '#999'
            }
    },
    series: [{
        data: [12000, 2140, 651, 8001, 24558, 11009, 8941],
        type: 'bar',
        markPoint: {
           data: [
              {type: 'max', name: '最大值', itemStyle: {color: '#1A237E'}},
              {type: 'min', name: '最小值', itemStyle: {color: '#9FA8DA'}}
           ]
        },
       markLine: {
                silent: true,
                data:[{yAxis: 10000}],
                lineStyle: {shadowColor: '#0000D0'},
                symbol:'none'
       },       
                    label: {
                normal: {
                    show: true,
                    position: 'inside'
                }
            },
    }]
};
;
if (option && typeof option === "object") {
    myChart.setOption(option, true);
}
var dom2 = document.getElementById("container2");
var myChart2 = echarts.init(dom2);
var app2 = {};
option2 = null;
option2 = {
    tooltip: {
        trigger: 'axis',
        axisPointer: {
            type: 'cross'
        }
    },
    xAxis: {
        name: '時間',
        type: 'category',
        boundaryGap: true,
        data: ['0:00','','', '3:00','','', '6:00','','', '9:00','','','12:00','','', '15:00','','', '18:00','','','21:00','','', '24:00']
    },
    yAxis: {
        name: '(分)',
        type: 'value',
        splitNumber: 6,
        splitLine: {
            show: true
        },
        axisTick: {alignWithLabel: true, interval: 25 }
    },

    series: [{
        data: [4500, 1000,300,5007,1200,2000,450,430,5400,2000,300,1790,2800,800,300,5700,5600,440,230,130,3200,340,4500,200],
        type: 'bar',
        markPoint: {
           data: [
              {type: 'max', name: '最大值', itemStyle: {color: '#1A237E'}},
              {type: 'min', name: '最小值', itemStyle: {color: '#C5CAE9'}},

           ]
        }
    }
    ]
};
;
if (option2 && typeof option2 === "object") {
    myChart2.setOption(option2, true);
}

window.onresize = function () {
    if(window.innerWidth > 600 && window.innerHeight > 500){
      myChart.resize({
        width: window.innerWidth,
        height: window.innerHeight / 2,
        silent: false
      });
      myChart2.resize({
        width: window.innerWidth,
        height: window.innerHeight / 2,
        silent: false
      });

    }else if(window.innerWidth > 600 && window.innerHeight <= 500){
      myChart.resize({
        width: window.innerWidth,
        height: 250,
        silent: false
      });

      myChart2.resize({
        width: window.innerWidth,
        height: 250,
        silent: false
      });


    }else if(window.innerWidth <= 600 && window.innerHeight > 500){
      myChart.resize({
        width: 600,
        height: window.innerHeight / 2,
        silent: false
      });
      myChart2.resize({
        width: 600,
        height: window.innerHeight / 2,
        silent: false
      });

    }else{

    }
};
       </script>
   </body>
</html>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

https://echarts.apache.org/en/option.html#xAxis.axisTick.interval

axisTickでalignWithLabelをfalseにしたうえで、intervalを0にするとすべての棒グラフの両隣に目盛り線を出せそうですね。

xAxis: {
  axisTick: {
    alignWithLabel: false,
    interval: 0
  }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/21 10:18

    ご回答いただきありがとうございます。
    とても参考になりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる