IT二刀流にはプロモーションが含まれています。

グーグルチャートでイカすタコメーター

Google Charts

イカなのかタコなのかよくわからん、かっこいいタコメーターをグーグルチャート(Google Chart)で作成。

Google Chartsを眺めていたらイカすタコメーターを発見!早速実践してみました。

Google Charts Gauge

さてさて、まずはサンプルコードをそのまま実践

<html>
  <head>
   <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   <script type="text/javascript">
      google.charts.load('current', {'packages':['gauge']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {

        var data = google.visualization.arrayToDataTable([
          ['Label', 'Value'],
          ['Memory', 80],
          ['CPU', 55],
          ['Network', 68]
        ]);

        var options = {
          width: 400, height: 120,
          redFrom: 90, redTo: 100,
          yellowFrom:75, yellowTo: 90,
          minorTicks: 5
        };

        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));

        chart.draw(data, options);

        setInterval(function() {
          data.setValue(0, 1, 40 + Math.round(60 * Math.random()));
          chart.draw(data, options);
        }, 13000);
        setInterval(function() {
          data.setValue(1, 1, 40 + Math.round(60 * Math.random()));
          chart.draw(data, options);
        }, 5000);
        setInterval(function() {
          data.setValue(2, 1, 60 + Math.round(20 * Math.random()));
          chart.draw(data, options);
        }, 26000);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 400px; height: 120px;"></div>
  </body>
</html>
Gauge1

おー、さすがGoogleだ。簡単なコードでサクッとできてしまった。

画像だとわかりにくいですが、ちゃんと針がぐりぐり動きます。

でも、なんかちょっと違うんだよな。もっとこうかっこいい車のタコメーターみたいにしたいな。。

Gaugeのデザイン変更

公式サイトのオプションを眺めても背景とかの色変更はないな。

黒っぽくしたいなーどうしようかな~とsvgを眺めているとピンときました。

CSSで直接いじってやろう!

※(追記)なんかgoogle.visualizationでいけるかも。。

<html>
  <head>
   <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   <script type="text/javascript">
      google.charts.load('current', {'packages':['gauge']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {

        var data = google.visualization.arrayToDataTable([
          ['Label', 'Value'],
          ['Memory', 80],
          ['CPU', 55],
          ['Network', 68]
        ]);

        var options = {
          width: 600, height: 200,
          redFrom: 90, redTo: 100,
          yellowFrom:75, yellowTo: 90,
          minorTicks: 5,
          majorTicks: ['0','10','20','30','40','50','60','70','80','90','100']
        };

        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));

        chart.draw(data, options);

        setInterval(function() {
          data.setValue(0, 1, 40 + Math.round(60 * Math.random()));
          chart.draw(data, options);
        }, 13000);
        setInterval(function() {
          data.setValue(1, 1, 40 + Math.round(60 * Math.random()));
          chart.draw(data, options);
        }, 5000);
        setInterval(function() {
          data.setValue(2, 1, 60 + Math.round(20 * Math.random()));
          chart.draw(data, options);
        }, 26000);
      }
    </script>
    <style>
  	text {
  		fill:#ffffff;
  	}
  	
  	circle[fill="#cccccc"] {
  		fill:#333333;
  	}
  	
  	circle[stroke-width="2"] {
  		fill:#000000;
  	}
  	
  	text[font-size="20"] {
  		font-size: 80%;
  	}
  	</style>
  </head>
  <body>
    <div id="chart_div" style="width: 400px; height: 120px;"></div>
  </body>
</html>
Gauge2

cssで直接svgのタグと属性セレクタを指定して変更。

※Google推奨の方法ではないので、svgの構造が変わったら修正が必要かも。。

かっこいい黒いタコメーター完成!!イカすぜ!!

ただ少し問題が、chromeやfirefoxなどでの確認はOKでしたが、Edgeでは文字の色以外は効かない。。属性セレクタの指定がうまくいっていない気がする。

ただ、IE系のブラウザの独自仕様には趣味レベルでは付き合っていられません。IEとかEdgeはシカト&無視じゃ!

ITエンジニアの転職

いまITエンジニアの需要は急拡大しています。
ITエンジニアの経験があれば好条件で転職することも難しくありません。

マイナビクリエイター

☆ 支援ご協力のお願い ☆

この記事が「役に立った」と感じたら

投げ銭の「OFUSEで応援」で支援して頂けたら励みになります!

OFUSEのやり方(説明)

関連記事
記事特集