メインチャートの問題

NK225チャート

出来事をF列:大分類(incident1)とG列:小分類(incident2)に分けて上部チャートには小分類、下部フィルターチャートには大分類にしたかった

試したコードはこんな感じ

<!DOCTYPE html>
<html>
<head>
  <!-- Google Chartsのローダースクリプトを読み込む -->
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <script type="text/javascript">
    // Google Chartsを読み込んだ後に実行されるコード
    google.charts.load('current', {'packages':['controls']});
    google.charts.setOnLoadCallback(drawFilteringChart);

    // チャートを描画する関数
    function drawFilteringChart() {
      // Google スプレッドシートからデータを取得するためのクエリを作成
      var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1L9bG7e-9NSIZnKYcsfE2fB440JOVghWL9XuXJj6fCXc/gviz/tq?range=A2:G');
      query.setQuery('SELECT A, E, F, G'); // A列、E列、F列、G列のデータを取得
      query.send(handleQueryResponse);
    }

    // クエリの応答を処理する関数
    function handleQueryResponse(response) {
      var data = response.getDataTable(); // クエリ結果をデータテーブルとして取得

      // F列とG列のアノテーションを設定
      data.setColumnProperties(2, {
        type: 'string',
        role: 'annotation'
      });
      data.setColumnProperties(3, {
        type: 'string',
        role: 'annotation'
      });

      // ダッシュボードを作成
      var dashboard = new google.visualization.Dashboard(
        document.getElementById('chart_range_filter_dashboard_div')
      );

      // チャートレンジフィルターを作成
      var control = new google.visualization.ControlWrapper({
        'controlType': 'ChartRangeFilter',
        'containerId': 'chart_range_filter_control_div',
        'options': {
          'filterColumnIndex': 0,
          'ui': {
            'chartType': 'LineChart',
            'chartOptions': {
              'annotations': {
                'textStyle': {
                  'fontSize': 12,
                }
              },
              'hAxis': {'baselineColor': 'none'}
            },
            'minRangeSize': 17280000000
          },

        'view': {
          'columns': [
            {
              'calc': function(dataTable, rowIndex) {
                return dataTable.getFormattedValue(rowIndex, 0);
              },
              'type': 'string'
            }, 1] // 1はE列、2はF列(annotation)、3はG列(annotation)
        }



        },
        'state': {'range': {'start': new Date(2020, 1, 4), 'end': new Date()}}
      });

      // ラインチャートを作成
      var chart = new google.visualization.ChartWrapper({
        'chartType': 'LineChart',
        'containerId': 'chart_range_filter_chart_div',
        'options': {
          'legend': {'position': 'none'},
          'vAxis': {
            'format': 'decimal' // Y軸の目盛りを数値として表示
          }
        },
        'view': {
          'columns': [
            {
              'calc': function(dataTable, rowIndex) {
                return dataTable.getFormattedValue(rowIndex, 0);
              },
              'type': 'string'
            }, 1, 3] // 1はE列、2はF列(annotation)、3はG列(annotation)
        }
      });

      // ダッシュボードにコントロールとチャートをバインドし、データを描画
      dashboard.bind(control, chart);
      dashboard.draw(data);
    }
  </script>
</head>
<body>
  <!-- ダッシュボードのコンテナー -->
  <div id="chart_range_filter_dashboard_div">
    <!-- チャートとコントロールのコンテナー -->
    <div id="chart_range_filter_chart_div" style="width:100%; height: 500px;"></div>
    <div id="chart_range_filter_control_div" style="width:100%; height: 300px;"></div>
  </div>
</body>
</html>

試してみると

下部フィルターチャートに出来事が被ってしまう

仕方ないので、メインチャートは出来事をF列:大分類(incident1)だけで仕上げ

コメント

タイトルとURLをコピーしました