1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoogleChartsの約8割をメモ帳とパワーシェルで快適操作する

Last updated at Posted at 2024-10-05

1.はじめに

 GoogleChartsには綺麗で沢山のグラフがあります。それをメモ帳とパワーシェルを使って簡単に操作する方法をご紹介します。ここでは4種類のグラフですが、参考サイトからデータ部分をコピー&ペーストすれば、約8割のgoogleChartをメモ帳で快適に操作することができます。GoogleChartsサイト 参考サイト
 また、グラフ作成の課題であるデータ入力方法ですが、今回は、直接データ張付、ファイル入力、マウスコピーを使う方法で結構実用的と思います。ご参考になれば幸いです。

2.事前準備

 それでは【マウス右ボタン⇒[新規作成]⇒テキストドキュメント】押下して新規ファイルを作成し、[新しいテキスト ドキュメント.txt] をダブルクリックしメモ帳を起動ください。
 次に下記の[コピーList1]をメモ帳にコピー&ペーストして貼り付けます。
そして、メモ帳の左上[ファイル]⇒[名前を付けて保存]⇒ファイル名[ wPshGraf111.bat ]を入力し⇒文字コード[ANSI]に設定して[保存]を押下した後、メモ帳を終了します。
★注:文字コード欄が[ANSI]設定であることを確認してください。
 あとは、[ wPshGraf111.bat ] をダブルクリックすると、下図の窓が開きます。

image.png

3.操作方法

(1)グラフ表示方法

 表示窓内の次の行をダブルクリックすると、今回のグラフが逐次表示されます。但し、ローソクグラフについては、データ参照サイトが開くのでデータの部分をマウスコピーした後、小窓の[OK]ボタンを押下ください。
1)&&& zType="LineChart"; ★[WC]折れ線グラフ
2)&&& zType="Gauge"; ★[WC]Gメータグラフ
3)&&& zType="GeoChart"; ★[WC]日本人口図グラフ
4)&&& zType="CandlestickChart"; zfl="7203_トヨタ"; ★[WC]ローソクグラフ

(2)グラフデータの編集・再表示

 マウス右ボタン[編集]を押下すると、[ wPshGraf111.bat ]でメモ帳が開くので、グラフデータの部分を編集し、[ファイル]⇒[上書き保存] します。
 表示窓への反映は、右ボタン[再表示]で反映されます。 なお、仮のデータ編集としてグラフ表示する場合は、表示窓を直接編集しダブルクリックするとグラフ表示します。(注:編集データは保存されません)

(3)プログラム説明・・・・List1 以降に記載します。

3.今回のグラフ4件

★[WC]折れ線グラフ(文字列/Fileからデータ取得の例)
image.png
★[WC]Gメータグラフ(ボタンをグラフに付加する例)
image.png
★[WC]日本人口グラフの一部(マウスコピーして張付けデータ編集の例)
image.png
★[WC]ローソクグラフ(マウスコピーして直接データ利用の例)
image.png

[コピーList1]

@echo off &rem if not "%~0"=="%~dp0.\%~nx0" (start /min cmd /c,"%~dp0.\%~nx0" %* &exit) &rem ★DOS窓mini化
powershell -ExecutionPolicy RemoteSigned "$fln=(echo %0); $aa=(Cat $fln -Raw); $fdt=$aa.substring($aa.indexof('##'+'STT:')); Iex($fdt+'##>');"
exit; pause&exit;
##
##Ver1.091 2024/1004 #####################################
##
##STT:●●batファイルで[GoogleChartを8割操作] 
##
using namespace System.Windows.Forms; Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ##★GUI
function dbg($cc){ [MessageBox]::Show($cc) }; function dbc($zcc){ Write-Host $zcc; };  ##★DBG
function ssView($bb){ $tBox.Text=$bb.substring( $bb.indexof("`n<"+"##" )); $tBox.SelectionStart=0; $mMain.Text="[1.071]"+$fln; }; ##★表示
##★メイン窓/編集窓の生成   ##★窓寸法(WW,HH)  ##★文字種類/寸法  ##★背景色
$mMain =New-Object Form -Pro @{ Size="1280,620"; }; $tBox =New-Object TextBox -Pro @{ Font="BIZ UDゴシック,13"; BackColor="#C0E0C0";
     Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;  }; $mMain.Controls.Add($tBox);
##★右釦メニュ ##★編集 ##★再表示 ##★クリップ処理
$tBox.ContextMenuStrip =$conMenu =New-object ContextMenuStrip -Pro @{ Font="BIZ UDゴシック,12"; }; 
function ssSetRbtMenu( $zcha ){ $aa=$conMenu.Items.Add( ($zcc =New-Object ToolStripMenuItem) ); $zcc.Text=$zcha; return $zcc; };
  (ssSetRbtMenu "編集(メモ帳)").add_Click({ notepad.exe $fln });   (ssSetRbtMenu "再表示").add_Click({ ssView( Cat $fln -Raw ) });
  (ssSetRbtMenu "取得(クリップ)" ).add_Click({ $tBox.Copy()  }); (ssSetRbtMenu "貼り付").add_Click({ $tBox.Paste() });
##★マウス[WC]操作 
$tBox.Add_DoubleClick({ $ln=((($tBox.Text).substring(0,$tBox.SelectionStart)).split("`n")).count-1; $zcc=($tBox.Lines[$ln]-split"##")[0];
  if( $zcc.startsWith("&") ){ for( $ii=1; $ii -lt 200; $ii++ ){ $cc=$tBox.Lines[$ln+$ii]; if($cc -eq $null){ break; };
      if( $cc.startsWith(";") ){ $zcc+="`n"+($cc.substring(1)).trim(); }else{ if( $cc.startsWith("#") ){ continue;}; break; }; }; }; ##dbc $zcc;
  if( $zcc.startsWith("&&& ")){ $zcc=$zcc.substring(3); $tBox.SelectionStart+=4; Iex($zcc); return;}; 
  if( $zcc.startsWith("&& " )){ $zcc=($zcc.substring(2)).replace('"','\"'); Start -NoN powershell -Arg "$zcc"; return;};
}); 
##★googleグラフの処理 [ ssGraf zType zOption zData zColum zPrg zBody]
##
function global:ssGraf($zType,$zOption,$zData,$zColum,$zAddProg,$zAddBody){ $szfile="$home\Desktop\gChart01.html";
  $zcc0='<html><head><script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript"> google.charts.load("current", {packages:["@@Package"]}); 
      google.charts.setOnLoadCallback(drawChart); var chart; var options; var data; 
      function drawChart(){ chart = new google.visualization.'+$zType+'(document.getElementById("chart_values"));
      options='+$zOption+'; ';
   if( $zData.startsWith("[") ){ $zcc0+='data =new google.visualization.DataView( google.visualization.arrayToDataTable( '+$zData+' ) );' }
   else{ $zcc0+='data =new google.visualization.DataTable(); '+$zData+'; ' };
   $zcc0+=$zColum+';chart.draw(data, options); };'
   $zcc0+=$zAddProg+';</script></head><body><div id="chart_values" ></div>'+$zAddBody+'</body></html>'   ; $zcc1='corechart';
   foreach($cc in 'AnnotationChart','TreeMap','Timeline','Table','VegaChart','GeoChart','Gauge','Sankey','Calendar','WordTree','TreeMap'){ 
      if($cc -eq $zType){ $zcc1=$cc; break; }; };  $zcc0=$zcc0.replace('@@Package',$zcc1);
   SC $szfile $zcc0; & $szfile;  ##★Web.html起動
}; ssView($fdt); $mMain.ShowDialog();


<##Ver1.00--[GoogleChartsの操作]--------------------------------------------------------
##  [WC]行をダブルクリック起動、マウス右釦:編集/クリップ処理

##★GoogleChartsグラフギャラリ&関連サイト----------------------------------------------
&& Start 'https://developers.google.com/chart/interactive/docs/gallery?hl=ja'  ##★[WC] googleサイト
&& Start 'https://ryupapa008.blogspot.com/2024/09/google_23.html'  ##★[WC] 関連サイト


##★折れ線グラフ(文字列/Fileからデータ取得の例)
##
&&&  $zType="LineChart";##★[WC]折れ線グラフ
;  ##★グラフデータ取得(ファイルから取得時は、$zcc=(Cat FileMame.txt -Raw) に変更)
;  $zcc="  0, 10, 23, 17, 18,  9, 11, 27, 33, 40, 32, 35, 30, 45, 31, 24, 29, 33, 36, 37, 39, 29, 40,
;         40, 42, 47, 44, 48, 52, 54, 42, 55, 56, 57, 60, 50, 52, 51, 49, 53, 55, 60, 61, 59, 62, 65,
;  ";
;  $zcc=($zcc.replace(" ","").replace("`n","").replace("`r","")).split(","); ##★不要文字削除
;  $zdt0="['X(ii)','データ'],`n"; $ii=0; ##★データ列の指定
;  foreach($cc in $zcc.split(",") ){ if( $cc -eq "" ){ continue; }; $zdt0+="[$ii,$cc],`n"; $ii++; }; dbc $zdt0;
;  ##★オプション、データ指定⇒グラフ表示
;  $zOption="{title: '折れ線グラフ', titleTextStyle:{color:'blue', fontSize:22}, 
;       width:900, height:500, fontSize:16, backgroundColor:'#f8fcef',
;       chartArea:{left:120, top:80, right:60, bottom:80}, legend:'none',
;       hAxis:{title:'X軸データ'},
;       vAxis:{title:'Y軸データ'},
;  }";
;  $zData="[ $zdt0 ]"; ssGraf $zType $zOption $zData;


##★Gメータグラフ(釦をグラフに付加する例)
##
&&&   $zType="Gauge"; ##★[WC]Gメータ
;  $zOption="{  width:680,  height:340,
;    min:0, max:280, yellowFrom:200, yellowTo:250, redFrom:250, redTo:280, minorTicks:5,
;  }";  
;  $zData="data.addColumn('number', 'Engine'); data.addColumn('number', 'Torpedo');
;          data.addRows(2); data.setCell(0, 0, 120); data.setCell(0, 1, 80);
;  ";
;  $zAddProg="
;    function changeSpeed(dd){ data.setValue(0,0,data.getValue(0,0) + dd*25);
;      data.setValue(0,1,data.getValue(0,1) +dd*20); chart.draw(data,options); };
;    function ssWebView(dd){
;      switch(dd){
;      case 11: window.open( 'https://www.yahoo.co.jp' ); return;
;      case 12: window.open( 'https://www.msn.com/ja-jp' ); return;
;      };
;    };
;  ";
;  $zAddBody="
;     <input type='button' value='[加速]' onclick='changeSpeed(1)' />
;     <input type='button' value='[減速]' onclick='changeSpeed(-1)'/>
;     <input type='button' value='yahoo'  onclick='ssWebView(11)'/>
;     <input type='button' value='MSN'    onclick='ssWebView(12)'/>
;  ";
;  ssGraf $zType $zOption $zData "" $zAddProg $zAddBody;
 

##★マップグラフ(日本の人口:マウスコピーの例)
&& Start 'https://seijiyama.jp/lgov/lgov-ranking/r02/' ##★[WC]データ利用サイト
##
&&&  $zType="GeoChart"; ##★[WC]日本人口図
;    $zcc="         
;順位	都道府県	総人口	平均年齢	人口増減率
;1	東京都	14047594	45.25	3.93867
;2	神奈川県	9237337	46.48	1.21764
;3	大阪府	8837685	47.1	-0.02018
;4	愛知県	7542415	45.65	0.79228
;5	埼玉県	7344765	46.84	1.07659
;6	千葉県	6284480	47.14	0.99337
;7	兵庫県	5465002	47.95	-1.26108
;8	北海道	5224614	49.78	-2.91949
;9	福岡県	5135214	46.69	0.65976
;"
##★不要文字削除⇒データ整列
;  $zcc=$zcc.replace("県","").replace("府","").replace("都",""); $zdat="";
;  foreach( $cc in $zcc.split("`n") ){ if( $cc.startsWith("順位") -or ($cc.length -le 10 )){ continue;};
;    $zcm=$cc.split("`t");  $zdat+=( "[`'" +$zcm[1] +"`'," +$zcm[2] +"],`n" );
;  }; $zdat= " ['都道府県', '人口']`n, $zdat"; dbc $zdat;
;  ##★グラフ表示
;  $zOption="{ title:'日本地図',  titleTextStyle:{color:'blue', fontSize:22}, 
;     width:800, height:600, fontSize:16, backgroundColor: '#ebf7fe', region:'JP', resolution:'provinces'
;  }";
;  $zData="[ $zdat ]"; ssGraf $zType $zOption $zData;



##★ローソクグラフ
##
!Webデータ箇所; 'https://www.kabudragon.com/s?t=7203' ##★[WC]株価リスト
##
&&& $zType="CandlestickChart"; $zfl="7203_トヨタ";    ##★[WC]ローソク
;   Start ('https://www.kabudragon.com/s?t='+$zfl.substring(0,4)); dbg "株価を[日付]下からマウスコピー"
;   $zcc=(Get-ClipBoard); $zcm=$zcc.replace(",","").split("`n");   ##★不要文字削除
;   $zMa1=5; $zMa2=25; $zSMa1=$zSMa2=0; 
;   $nn=$zcm.length; $zcc0=""; $kcm=New-Object String[](500); ##dbc $zcm; ##★高値2,終値4,始値1,安値3
;   for( $ii=$nn-1; $ii -ge 0; $ii--){ $cc=$zcm[$ii]; if($cc.startsWith("20") ){;}else{ continue; }; $ccm=$cc.split("`t"); 
;     $dt0=$ccm[0].replace("2024/",""); $dt1=$ccm[2]; $jj++; $kcm[$jj]=$dt2=$ccm[4]; $dt3=$ccm[1]; $dt4=$ccm[3];
;     ##★Ma5演算
;     if($jj -lt $zMa1 ){ $zSMa1+=$dt2; $dt5=[int]($zSMa1/($jj+1)) }else{ $zSMa1+=($dt2-$kcm[$jj-$zMa1]); $dt5=[int]($zSMa1/$zMa1); };
;     if($jj -lt $zMa2 ){ $zSMa2+=$dt2; $dt6=[int]($zSMa2/($jj+1)) }else{ $zSMa2+=($dt2-$kcm[$jj-$zMa2]); $dt6=[int]($zSMa2/$zMa2); };
;     $zcc0+=("['$dt0',$dt1,$dt2,$dt3,$dt4],`n");
;   }; $dda=$dt2-$kcm[$jj-1];  $dt55=$dt2-$dt5; $dt66=$dt2-$dt6; dbc $zcc0;
;  ##★
;  $zOption="{title:' $zfl [ $dt0 ]株価 $dt2 ($dda) [価-Ma5($dt5)]=$dt55  [価-Ma25($dt6)]=$dt66 ',
;      titleTextStyle:{fontSize:20, color:'black'}, 
;      width:1280, height:620, fontSize:12, chartArea:{left:20, top:30, right:70, bottom:40},legend:'none',
;    series:{ 
;       0:{targetAxisIndex:1,}, 
;     }
;  }"; $zData="[ $zcc0 ], true "; ssGraf $zType $zOption $zData;


<プログラム説明>
(1) 1行目 [@echo off ....]から3行目: パワーシェル文をbatファイル自身から起動する方法で、[##STT:]行以下を切り出してIex()でパワーシェルを起動します。
(2) [using ....]行から [}; ssView($fdt); ....]行目: パワーシェル文で窓表示画面をコントロールする処理です。
(3) [<##Ver ...]行以下: パワーシェルではコメント行としての扱いですが、このアプリでは、窓表示データ領域として使います。
(4) 窓データ領域に今回のグラフデータを記述し、メモ帳で編集します。
(5) [&&]行をダブルクリックすると、継続する文字列でサブシェルとして独立に起動します。
(6) [&&&]行をダブルクリックすると、上記(2)記載のプログラム一部として継続処理します。
(7) [;]行は、[&]行に結合した後、上記(5)又は上記(6)の処理をします。
(8) [function global:ssGraf( ..... ]行からの13行で、今回のGoogleChartsグラフ表示の HTMLファイルを生成してグラフ表示します。
以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?