• 2022/11/23
  • グラフ分析アプリ

グラフ分析

①グラフ分析に求めたもの
はじめに

はじめに

もともと開発系の人間なので、オシロやロジアナなどの計測機器での測定データをエクセルでグラフ化して分析することが多いんです。特にそんな人たちに伺います
エクセルのグラフ機能を使っていてイライラしたことありませんか?

・データ点数が多いとエクエルの反応が遅い

・グラフの座標が読み取れない

・拡大縮小を繰り返すのに最大最小を入れるのが面倒

・データ点間の測定ができない

・グラフ同士の四則演算するにしても、サンプリング時間が同じでないと計算できない

・グラフ近似が結構思ったところを通らない

まだまだありますが、こういった点を改善したアプリを作りました。求めるものは、

・最終的に残すデータの保存などはエクセルとし、エクセルとの連携が簡単にできる

・ちょっと分析してみたいときに手軽に扱えるアプリを目指す

・グラフ系列同士の四則演算(電流x電圧=電力etc)など欲しい機能はどんどん搭載する

取組みの最初から詳細仕様はなく、パイロットプロジェクト的に進め「これ欲しいな」って思った機能を追加していったので、動画とグラフの同期表示だとか、フィルター機能だとか様々な機能が入ってます。矛盾なく作り上げようとしたことと勉強も兼ねて取組んだので丸々3回くらい作り直ししてます

検証は、企業で行う検証(バグ取り)と比べると一旦というレベルで十分ではないですが、実作業で問題なく使えてます

アプリの動作環境

・OS     :Windows 10

・フレームワーク:.NET Framework 4.8

アプリのダウンロード

実行ファイルと説明で使用するテストデータは、ここからダウンロードできます

・実行ファイルのダウンロード
・テストデータのダウンロード

これらのファイルは何も保証するものではありません。あくまでインストールを含め自己責任でご利用ください。ダウンロードで警告がでたら、「トラブル対処」を見て対処してください

実行ファイルのアプリはインストール不要ですが、マイクロソフトのライブラリである .Net Framework のインストールは必要です。既にインストール済でインストールを実行すると「インストール済のメッセージ」が出まが、その場合はキャンセルして抜けてください
以下の手順で実行できます。アプリ実行で警告がでたら、「トラブル対処」を見て対処してください

・zip ファイルを解凍します

・.Net Framework4.8 上で動作するので ndp48-web.exe を実行して、.Net Framework4.8 をインストールします

・SmallSolution_Graph.exe を実行します

アプリ実行例

起動した画面が以下のようになりますので、いったん「①詳細」→詳細パネルが開いたら「②全て規定値に戻す」→「③更新」をクリックして、設定を初期化してください
「×」か「更新」で閉じます

テストデータの「Can.csv」を「ファイル」→「開く」から開くか、ファイルをドラッグ&ドロップで開きます。グラフ上でマウス左クリックして左右に移動、ホイールを回して拡大縮小ができます

表示間引き

テストデータの「Sound_bike.wav」を「ファイル」→「開く」から開くか、ファイルをドラッグ&ドロップで開きます
「①詳細」→詳細パネルが開いたら基本タブの「②表示間引き」をチェックオフ→「③更新」をクリックしてください

グラフ上でマウス左クリックして左右に移動してみると、移動が極端に遅くなるはずです。「表示間引き」なしだと、すべてのデータ点を移動処理するので時間がかかってしまいますが、「表示間引き」ありだと重なっているデータ点を間引いて処理するので非常に短時間の移動処理ができます
データそのものを加工しているのではなく表示する時の処理で間引いています。データそのものの加工も機能をもっています(後述)
「表示間引き」はチェックオンに戻しておいてください

同期再生・・・サウンド再生(軽く紹介)

折角サウンドファイルを開いたので、音再生と動画再生の同期まで軽く紹介させてもらいます

ここでは音を出して再生させてみます。パソコンのスピーカをオンにしてからメニューの「同期」→「同期再生」をクリックしてください

Can.csv は缶のを鳴らす音で「ピン」と発し、Sound_bike.wav はバイクのエンジン音で「ブンブン・・・」と発するはずです

グラフ上でマウス左クリックして左右に移動すると、再生位置を変えられます
▼位置が再生(同期)位置で再生しているポイントです

同期再生・・・動画再生(軽く紹介)

グラフが多いと見ずらいので、マウスをタイトルパネル上にもっていくと「×」が浮かび上がるので、「Can.csv」を削除します

テストデータの「Video.mp4」を「ファイル」→「開く」から開くか、ファイルをドラッグ&ドロップで開きます。メニューの「同期」→「同期再生」をクリックすると、バイクの音と動画が同期して再生されます
マウスを動画にかざすとシークバーが出ます。この■のシークバー位置の時刻とバイク音の▼位置の時刻が同じになっています

動画再生が何故必要?

素材が一致していなので想像しずらいんですが、波形と機械的な動きを見ながら不具合の原因を探ったりすることは、メカトロ系の開発者にはよくあります。例えば動画が「エンジンの吸気弁」だとすると吸気弁の動きとエンジン音の発生タイミングを観察して、吸気弁の制御をずらして音が下がるポジションを探るとか・・・・(あくまで想像です)

何ができるかリスト・・・メニュー

メニュー項目内容備考
ファイル開くファイル読込み
csv、tsv
wmv、avi、mov、mp4
wav、mp3、m4a
bmp、jpg、png
ssg、sb

テキストファイル
動画ファイル
サウンドファイル
静止画ファイル(読めるだけ)
独自バイナリファイル
選択保存選択したグラフのファイル書込み
csv、tsv
wav
ssg、sb

テキストファイル
サウンドファイル
独自バイナリファイル
終了アプリの終了
選択全選択全てのグラフを選択する
選択グラフを一括変換するなどの
機能があるため、動画などは選択
されません
最小化選択されたグラフを最小化する個別にはタイトルパネルの右上に
表示される「-」で最小化可
削除選択されたグラフを削除する個別にはタイトルパネルの右上に
表示される「×」で削除可
合成選択されたグラフを一つのグラフ
に合成する
複数の系列を持つグラフを生成
合成解除選択されたグラフを一つずつの系
列を持つグラフに分解する
自動配色選択されたグラフの系列に色付け
する
個別に色付けするには、グラフ上
で系列選択した後に「右クリック
」→「系列色」で変更可
同期セット選択されたグラフの同期をセット
する
マウスでグラフを移動させると同
期グラフは同じ動きをするように
なる
同期解除選択されたグラフの同期を解除す
編集削除選択されたグラフを編集する
編集バー5と6の組み合わせで指
定したエリアを削除する
左と右の削除でグラフ位置の移動
はないが、間の削除はグラフをつ
なげる
上書き選択されたグラフを編集する
編集バー5と6の組み合わせで指
定したエリアを上書きする
上書きする値は、「詳細」→基本
タブの「「エリア上書き数値」で
変更可
ファイル保存選択されたグラフを編集する
編集バー5と6の組み合わせで指
定したエリアをファイル保存する
コピー選択されたグラフを編集する
編集バー5と6の組み合わせで指
定したエリアのデータをTSV形式
でクリップボードに保存する
「詳細」→基本タブの「クリップ
ボード書込み」で形式変更可
原点移動選択されたグラフを編集する
バー5の位置を原点に移動する
個別に移動するには、グラフプロ
ット位置にマウスをのせてマーカ
「■」が表示された位置で「右ク
リック」→「マーカ位置の原点移
動」で移動できます
表示マーカーグラフのプロット点にマーカ表示
する
プロット点=データ点
垂直カーソルマウス位置の垂直方向に全てのグ
ラフにカーソルを表示する
水平カーソルマウス位置の水平方向にマウスが
のったグラフだけカーソルを表示
する
ヒントグラフプロット位置にマウスをの
せてマーカ「■」が表示されたデ
ータの値を表示する
グリッドグラフ縦方向のグリッドを表示す
再表示グラフ全体が表示されるようなス
ケールで再表示する
スクロール水平水平方向の移動と拡大縮小を有効
にします
垂直垂直方向の移動と拡大縮小を有効
にします。マウスがのったグラフ
で有効になります
動画は水平と垂直ともに有効
計測垂直バー1グラフに垂直バー1を表示し、そ
の位置を値で表示する
グラフを移動してバーが見えなく
なったら、再度設定をオフオンし
てください
垂直バー2グラフに垂直バー2を表示し、そ
の位置を値で表示する
同上
水平バー1選択中のグラフに水平バー3を表
示し、その位置を値で表示する
同上
水平バー2選択中のグラフに水平バー4を表
示し、その位置を値で表示する
同上
近傍点移動垂直水平バー移動で、グラフのプ
ロット点が近傍にあれば、その近
傍点に強制移動する
「詳細」→基本タブの「表示間引
き」がチェックされている間引き
されている場合で有効
コピー
ペースト
選択コピー選択されたグラフのデータをTSV
形式でクリップボードに保存する
「詳細」→基本タブの「クリップ
ボード書込み」で形式変更可
選択ハード
コピー
選択されたグラフをビットマップ
形式でクリップボードに保存する
レポート作成などは便利です
ペーストCSV・TSV形式のデータがクリッ
プボードに保存されていれば、
グラフとして読込みする
作図直線フィッテ
ィング
マウスで直線を引く。その直線を
近似直線として傾きと切片を表示
する
直線の端点をマウスでピックアッ
プして移動させると近似も変化し
ます
指数フィッテ
ィング
マウスで矩形を引く。その矩形内
に指数曲線が表示され時定数を表
示する
矩形のピックアップ点を移動させ
ると形状やXY反転できます
時定数をアバウトでもすぐに知り
たいときに結構使えます
矩形メモエクセルなどのテキストボックス
と同じような図形
選択ハードコピーと併用して使う
とレポート作成などは便利です
直線エクセルなどの直線と同じような
図形
同上
エクセルなどの円と同じような図
同上
エリア指定で
選択
作図した図形をマウスでエリア指
定して選択する
「Delete」キーで削除、マウスで
移動、「Cntl-C」と「Cntl-V」で
アプリ内でコピペ可
エリア指定で
削除
作図した図形をマウスでエリア指
定して削除する
詳細ーーーーアプリの詳細設定をする
LanguageJapanese日本語表記にする
English英語表記にする

何ができるかリスト・・・右クリックコンテキストメニュー

メニュー項目内容
座標コピーーーーーヒントで表示された値をクリップボードに保存する
マーカ位置の原点移動X移動グラフプロット位置にマウスをのせてマーカ「■」
が表示された位置を原点に移動(X原点移動)
Y移動同上(Y原点移動)
XY移動同上(XY原点移動)
系列削除ーーーーグラフプロット位置にマウスをのせてマーカ「■」
が表示された位置で左クリックすると系列が選択で
きる。この選択された系列を削除する
「Delete」キーでも削除可
系列幅各選択系列線の幅を選択する
系列色各選択系列線の色を選択する
マーカータイプ各選択系列線のマーカタイプを選択する
グリッド色各選択グラフのグリッド色を選択する
背景色各選択グラフの背景色を選択する
系列オーディオ再生ーーーー同期再生でサウンドを有効にする
拡大表示ーーーー複数のグラフは基本的にカスケード(縦)表示が基
本だが、一つだけ拡大して右側に表示する
2値変換変化点データ2値化Saleaeのロジアナのように、デジタルの2値
データのフォーマットで変化点のデータで出力され
るものがある。そういった変化点データを補間処理
する
アナログ2値化アナログデータの2値化処理をする。閾値は大津の
判定法を用いている
2値グラフノイズ
検出
2値データの凸パルス or 凹パルス幅が100us
以下のパルスを検出処理する。パルス幅は「詳細」
→変換タブの「ノイズ幅」で変更可
2値グラフノイズ
削除
2値データの凸パルス or 凹パルス幅が100us
以下のパルスを除去処理する。パルス幅は「詳細」
→変換タブの「ノイズ幅」で変更可
Dutyハイデータの最初が
・Hi→Lo→Hiなら最初のHiは無視
 次のLoとHiを1パルスとしてHiのDuty
 を求めてグラフ化する
・Lo→Hi→Loなら最初のLoは無視
 次のHiとLoを1パルスとしてHiのDuty
 を求めてグラフ化する
Dutyローデータの最初が
・Hi→Lo→Hiなら最初のHiは無視
 次のLoとHiを1パルスとしてLoのDuty
 を求めてグラフ化する
・Lo→Hi→Loなら最初のLoは無視
 次のHiとLoを1パルスとしてLoのDuty
 を求めてグラフ化する
周波数ハイエッジデータの最初が
・Hi→Lo→Hi→Loなら最初のHi→Loは
 無視。次のHiとLoの合計時間を周波数に直し
 てグラフ化する
・Lo→Hi→Lo→Hiなら最初のLoは無視
 次のHiとLoの合計時間を周波数に直してグラ
 フ化する
周波数ローエッジデータの最初が
・Hi→Lo→Hi→Loなら最初のHiは無視
 次のLoとHiの時間を周波数に直してグラフ化する
・Lo→Hi→Lo→Hiなら最初のLo→Hiは
 無視。次のLoとHiの合計時間を周波数に直し
 てグラフ化する
周波数両エッジデータの最初が
・Hi→Lo→Hi→Loなら最初のHiは無視
 次のLoの時間を周波数に直してグラフ化する
・Lo→Hi→Lo→Hiなら最初のLoは無視
 次のHiの時間を周波数に直してグラフ化する
中心位相Hiパルス中心点とLoパルス中心位置を結ぶ三角
波のデータをグラフ化する
反転HiとLoを反転しグラフ化する
パルス積算
ハイエッジ
Hiエッジ検出でプラス1の積算しグラフ化する
パルス積算
ローエッジ
Loエッジ検出でプラス1の積算しグラフ化する
パルス積算
両エッジ
エッジ検出でプラス1の積算しグラフ化する
Log10変換各選択X軸、Y軸を Log 変換する
FFT変換各選択A、C、Z特性で FFT変換する
音圧変換各選択A、C、Z特性で 音圧変換する
ウエーブレット変換各選択A、C、Z特性で ウエーブレット変換する
デジタルフィルタ各選択ローパス、ハイパス、バンドパス、ノッチ、ローシ
ェルフ、ハイシェルフ、ピーキング、オールパスの
フィルタ変換をする
拡張フィルタ各選択FIRローパス、FIRハイパス、FIRバンドパ
ス、FIRノッチのフィルタ変換をする
算術演算各選択時間積分、時間微分、Y値積算、Y値差分、四則演算
の変換をする
間引き各選択1/10~1/10000のデータ点間引き変換を
する

モータ制御をやってたことが多く、モータ制御に関する機能が多いかもしれません。以降でもう少し詳しく説明していきます