visidataで即席散布図プロットを使ってデータを確認する


※ 当ページには【広告/PR】を含む場合があります。
2024/06/17
Python製の高機能データエディタ・『visidata』を使ってCSVファイルを操作する




前回、ターミナルから直接CSVデータを編集できるPython製のエディタツール
『visidata』 の概要をまとめていました。

合同会社タコスキングダム|蛸壺の技術ブログ
Python製の高機能データエディタ・『visidata』を使ってCSVファイルを操作する

Python製コマンドアプリ・『visidata』でシェルターミナルからCSVデータを編集・表示する

参考|Drawing graphs - visidata

前回の記事では触れませんでしたが、このvisidataの利用方法の真髄は、その名表わすように、
「visi(視える)」+「data(データ)」 ということで、超シンプルな散布図プロットをターミナルに表示させることにあります。
なにかの資料に載せるような綺麗な作図としては期待できませんが、実験データのような直ぐに目で見て確認したい場合には、非常に有効なツールのように思います。
この記事では、以降でvisidataによる散布図プロットの作成に関する概要を特集していきます。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

visidataの散布図プロットの基本



最初に2次元プロットしたいデータを含むCSVファイルを使って、散布図の基本をやってみましょう。

            $ vd <データを含むcsvファイル>

        

ここからx軸になる数値列と、y軸になる数値列を指定します。
なお、ここでの数値列とは、

            「#」 ... int型(整数)
「%」... float(浮動小数点数)
「$」... currency(通貨)
「@」... data(日時)

        

のどれかの属性(数値型)でプロットできるデータとして認識されます。
ちなみに、プロットデータ列として解除したい場合には、
「~」(文字列型) にしておくと良いでしょう。
なお、数値列の他に、
「ラベル列」 という区分もあります。
数値列とラベル列をセットにすることで、プロットする色を変更できるようになるので、使いようによっては便利です。
列のデータ型というのものを頭の隅に置いてもらって、まずvisidataの散布図を作る手順は以下のようになります。

            1. x軸として指定したい列の数値型を設定。
    「#」キー => int型
    「%」キー => float型
    「$」キー => currency型
    「@」キー => date型
2. 「!」キーでx軸となる列を指定する
3. y軸として指定したい列の数値型を設定。
    「#」キー => int型
    「%」キー => float型
    「$」キー => currency型
    「@」キー => date型
4. オプションでラベル列として使いたい列を「!」キーで指定する
5. プロットしたい列を選択して「.」キーを押す

        

一例でやって見ましょう。
なにかcsvデータをvisidataで開きます。
995x541
合同会社タコスキングダム|蛸壺の技術ブログ


x軸として利用する列を適当な数値データに指定し、
「!」 キーでx軸にマークします。
315x678
合同会社タコスキングダム|蛸壺の技術ブログ



次にy軸で利用する列に数値型を指定しておきます。
800x640
合同会社タコスキングダム|蛸壺の技術ブログ



これで対象の数値列を選択して
「.」 キーを押すと、最低限の散布図を描くことができます。
989x534
合同会社タコスキングダム|蛸壺の技術ブログ

散布図にインタラクティブな操作を行う



visidataのプロットでは、表示中のデータに様々な操作を行うことで、より有用なデータをフィルタリングしたり、拡大表示したりすることが可能です。
例えば、先程のプロットで、集中的に調べたいエリアを選択し、
「zz」 キーを押してみましょう。
659x785
合同会社タコスキングダム|蛸壺の技術ブログ


すると、見てのように拡大して見たい領域のデータだけが表示されます。
さらにここから
「Enter」 キーを押すと、選択したデータ点だけをフィルタリングした表データを新規に抽出することも可能です。
700x383
合同会社タコスキングダム|蛸壺の技術ブログ


とりわけ表示範囲で良く使うテクニックは、
「x」「y」 キーによるx/y軸範囲入力指定です。
マウスから手動の領域範囲指定はなかなか難しいので、この方法ならば確実に狙った範囲をピックアップすることが可能です。
800x734
合同会社タコスキングダム|蛸壺の技術ブログ

合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

複数のデータ列を重ねてプロット(マルチプロット)する



先程はxyプロットにおいて、1つの列に対して1つの列、という散布図を描きました。
この他に、同程度の大きさの数値であれば、同一x軸上に複数列の数値をy軸に重ねて表示させることも可能です。


            1. 「!」キーでx軸となる列を指定する
2. x軸となる列に数値型を設定する
3. 場合によってはラベル列となる列を「!」キーで追加指定する
4. y軸として表示させたい列すべてに数値型を設定する
5. 「g.」キー(「g」キーを押した後に「.」キー)を実行

        

簡単な例を示しますが、項目1〜3までは先程の単列プロットの手順と同じです。
異なる手順としては、重ねて表示させたい列に数値型を指定し(表示させたくない列は型無しか文字列型)、
「g.」 キーを押すだけです。
778x1000
合同会社タコスキングダム|蛸壺の技術ブログ


複数の数値列を重ねてプロットする問題点としては、visidataの散布点は色しか変わらないので見やすくはならないことと、重なったデータ点では一番上のレイヤーにある点しか見えずに、隠れた点がどこにあるのか分からなくなることです。
数値のオーダーが違うデータなど、そもそもグラフとして重ねること難しい列を扱う場合、もしくは、左右上下に分割したプロットを表示させたい場合にはvisidata単体では難しいため、先行して別記事で説明していた
『WezTerm』 による画面操作を併用すると良いでしょう。

合同会社タコスキングダム|蛸壺の技術ブログ
【シェルコマンド】WezTermの画面操作

WezTermでのターミナル画面の分割操作のショートカットキー




987x544
合同会社タコスキングダム|蛸壺の技術ブログ

合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

散布図を操作する



visidataのプロット機能を十分に活用するためには、
「散布図の操作方法」 に慣れ親しむ必要があります。
ここでは主要なキー&マウス操作をまとめます。

キーボードから操作



visidataのプロットをインタラクティブに操作するには、キーボードからのキーの受付が基礎になります。
細かくなるため、すべてのキー操作には触れませんが、主だって利用するキーは以下のようなものです。


キー 備考
1-9 (マルチプロットの場合)各ラベル番号のプロットを表示/非表示に切り替える
zc パレット(プロットの色)をシフトする
h/j/k/l カーソルの位置を移動
H/J/K/L カーソルの範囲を拡張/縮小
+/- カーソルの位置を中心にズーム範囲の拡大/縮小
x x軸の表示範囲を数値入力で指定(min:左端 max:右端)
y y軸の表示範囲を数値入力で指定(min:下端 max:上端)
zz 選択中のカーソル範囲でズーム
_ データを包括するように自動ズーム
z_ アスペクト比(x軸の長さ/y軸高さ)を指定してズーム
s/t/u プロットから範囲選択中のカーソル内のデータ行を選択/反転/非選択
gs/gt/gu スクリーンにプロット表示されているデータ行を全て選択/反転/非選択
d プロットから範囲選択中のカーソル内のデータ行を消去
gd スクリーンにプロット表示されているデータ行を全て削除
Enter プロットから範囲選択中のカーソル内のデータ行を新しいシートで開く
gEnter スクリーンにプロット表示されているデータ行を全てを新しいシートで開く
v プロットのラベルや軸目盛りの表示/非表示を切り替える

マウスから操作



プロット上のマウス操作もいくつか存在します。

キー 備考
左クリック+ドラッグ カーソル範囲を設定
右クリック+ドラッグ 画面スクロール
ホイールスクロース ズームイン・ズームアウト

マウスの操作は感覚的な動作なので扱いやすいですが、キーボード操作に慣れれば使わなくても良いでしょう。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

visidataからmatplotlibを使ってグラフをエクスポートする



簡易的な2次元プロットをそのまま外部ライブラリとして
matplotlib をインストールしていればそのままmatplotlibでの作図作業に移行させることも可能です。
700x329
合同会社タコスキングダム|蛸壺の技術ブログ


ただし、Python環境に別途matplotlib周りのインストールをしていないと、エラーが発生してしまいます。
matplotlibへのエクスポートを行わせたい場合、追加でいくつかのモジュールを追加します。

            $ pip install pandas seaborn

        

これで問題なくmatplotlib(seaborn)がインストールできた後で、
[Plot] > [Graph] > [replot using matplotlib] を実行すると、
700x466
合同会社タコスキングダム|蛸壺の技術ブログ


のようにmatplotlibの作図ダイアログからプロットを製図することができます。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

まとめ



今回はvisidataの機能の一つである「簡易散布図プロット」のテクニックをざっとまとめていきました。
CSVファイルから生データをじっくりと確認したい用途などにとても便利に使えるので、この記事の内容に興味が湧けば一度visidataを触ってみてください。