CSVファイルのグラフ化とアプリ化
CSVからグラフ化迄のプロセスの説明
簡単な流れ
- 166行:CSV ファイルを読み込む
- 169行:列指定した列番号が不正か調べてNGなら、終了する
- 175〜182行:csvの無効な行を削除したテンポラリcsvファイルを作成する
- 185〜189行:テンポラリファイルに保存されたCSVを読み込む
- 191〜193行:テンポラリcsvのx軸とy軸 のデータを抽出
- 203行:無効な色が指定された場合にデフォルト色をnavyに設定
- 213行:グラフの作成
- 216行:グラフのタイトルをy軸に対応するのヘッダーを取得してグラフタイトルに設定
- 237〜241行:グラフを表示してテンポラリファイルを削除
- 表示されたグラフウインドウの上部赤丸ボタンを押すことでウインドウが閉じて終了します。
PythonによるCSVファイルのグラフ化 Script
【入力画面ウィンドウ作成】プロセスの終了・129行からの続きです。 「シェルスクリプトを実行」のエディタ部の130行以降にコピペして追記します。
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
### Graph 描画 プロセス ### x_csv=text1 y_csv=text2 # x軸、y軸のcsvファイルの列番号を取得する # 列インデックスは 0から始まるので 1減算 x_retsu=int(x_csv)-1 y_retsu=int(y_csv)-1 # グラフのx軸名、y軸名、線幅、線色オプションを取得する x_name = text4 # x軸名 y_name = text5 # y軸名 line_width = text6 # 線幅 line_color = text7 # 線色 ### グラフ描画用ライブラリのインポート ### import pandas as pd import matplotlib.pyplot as plt import tempfile import matplotlib from matplotlib.colors import is_color_like import sys import os # osモジュールのインポートも必要です # グラフに日本語フォントの設定 (macOSに標準でインストールされているHiragino Sansを指定) matplotlib.rcParams['font.family'] = 'Hiragino Maru Gothic Pro' # macOS 標準の日本語フォント # ファイル名を取得(拡張子を除く) グラフタイトル用として # file_name = os.path.splitext(os.path.basename(input_file))[0] # CSV ファイルを読み込む df = pd.read_csv(file_path) # 列設定がイレギュラーなら、プログラム終了‼️ if int(x_retsu) >= len(df.columns) or int(y_retsu) >= len(df.columns): print(len(df.columns), x_retsu, y_retsu) sys.exit(0) ## csvの無効な行を削除する # 2列目(インデックス1)と3列目(インデックス2)のデータが数値かどうかを確認 # 数値に変換できない場合は NaN にして、その行を削除 df = df[pd.to_numeric(df.iloc[:, x_retsu], errors='coerce').notna() & pd.to_numeric(df.iloc[:, y_retsu], errors='coerce').notna()] # テンポラリファイルを作成 with tempfile.NamedTemporaryFile(delete=False, mode='w', newline='', suffix='.csv') as temp_file: output_file_after = temp_file.name # temp_fileのパスを取得 # テンポラリファイルに削除後のデータを書き込む df.to_csv(output_file_after, index=False) # テンポラリファイルに保存されたCSVを再度読み込む temp_df = pd.read_csv(output_file_after) # x軸とy軸 のデータを抽出 x = temp_df.iloc[:, x_retsu] y = temp_df.iloc[:, y_retsu] # グラフサイズ:デフォルトサイズ(6.4, 4.8)より横幅を大きく設定 plt.figure(figsize=(8, 4.8)) # 色(指定)が有効かどうかを確認する関数‼️ def is_valid_color(color): return is_color_like(color) # 無効な色が指定された場合にデフォルト色を設定 if not is_valid_color(line_color): print(f"無効な色: {line_color} が指定されました。デフォルトの色 'navy' に設定します。") line_color = 'navy' # デフォルトの色を設定 else: print("色指定は正常") # グラフの作成 plt.plot(x, y, marker='', color=line_color, label='kbps', linewidth=line_width) # linewidth=で太さを指定デフォルトは(1 px) # グラフのタイトル:y軸に対応するのヘッダーを取得してグラフタイトルに設定 header_column = df.columns[y_retsu] plt.title(f"{header_column} のグラフ") plt.xlabel(f"{x_name} ({x_retsu + 1}列)") plt.ylabel(f"{y_name} ({y_retsu + 1}列)") # y軸の範囲を設定(y軸を0から開始)‼️ # plt.ylim(bottom=0) # y軸の下限を0に設定 # グリッド線を表示(縦線だけをオフにする場合) plt.grid(True) # 目盛線(ticks)の設定: x軸とy軸の目盛りを調整 plt.xticks() # x軸の目盛りを回転(必要に応じてrotation=45) plt.yticks() # y軸の目盛りはそのまま # 凡例を表示 # plt.legend() # グラフを表示 plt.show() # テンポラリファイルを削除 os.remove(output_file_after) # print(f"テンポラリファイル '{output_file_after}' が削除されました。") |
「シェルスクリプトを実行」画面で右上の [ ▶ ]ボタンを押すことで下の動画で示します様に、プログラムが直ぐに実行されます。
この動画は、入力オプションで、グラフの線色を red に、線幅を0.5pxにして選択したCSVデータからグラフ描画しています。 またPythonグラフ下の十字ボタンを押して、トラックパッド操作で自在にグラフの拡大・縮小の動作が確認できます。エラー無く動作していれば、
PythonによるCSVファイルのグラフ化プログラムの完成です‼️
Pythonプログラムを単独実行できるアプリ化(.app)するには
ショートカットアプリの「シェルスクリプトを実行」に記述したscript code を全選択コピーしてから、テキストエディットアプリを起動して、ペーストした後、例えば「ABC.txt」で保存します。 「ABC.txt」の拡張子を .py にします。 ターミナルを開いて、python3 ABC.pyを実行できますが面倒ですので、単独実行できるアプリ化(.app)したい訳です。
オーソドックスな方法としてPyInstallerでapp化できますが、オススメしません。 実際に、PyInstallerでapp化したファイルを実行すると、何故か?起動やグラフ描画までの時間が大幅にかかります。 そこでオススメは、ショートカットでPythonプログラムを作成しているので、以下の手順でアプリ化することをオススメします。
ショートカットを一旦、Dockに入れることで、単独で実行出来る「.app(アプリ)」にできます。 (下の手順参照)
簡単な手順(実行ファイル化)
- 例えば、ショートカット名「CSV_to_Graph_python」にして、そのショートカットを右クリックして
- ファイル > Dockに追加 を選択
- Dockに入れた「CSV_to_Graph_python」を右クリックして、オプション > Finderに表示 を選択
- Finderに表示されたファイルを見ると、CSV_to_Graph_python.app になって、単独で実行できるアプリになります。
- Dockに追加された、ショートカットが不要なら、オプション > Dockから削除 します。

ここから、Pythonの matplotlibライブラリを利用した【グラフウィンドウ操作とサンプル例】に移ります。