前提・実現したいこと
Python3を使用して、連続で100個のヒストグラムの描画を試みています。
具体的には次の様な流れでの実装を考えました。
「glob.glob()で特定のフォルダ内にある、csvファイルを全てリストとして受け取る」↓ 「受け取ったリストを一つずつ読み、一次元配列にする」↓ 「matplotlibのsubplt.subplots()で10*10(縦10,横10)の図を作る」↓ 「一次元配列にしたもののヒストグラムを作成する」↓ 「先ほど作成したsubplotsにひとつずつ入れていく」↓
読み込むcsvファイルとしては以下の様なものです
python3
1df = pd.DataFrame(np.arange(12).reshape(3, 3), 2 columns=['X3380', 'X3381', 'X3382'] 3 index=['Y2356', 'Y2357', 'Y2358'])
実装にあたり、以下のサイトを参考に実装を試みたのですが、上手くイメージ通りに動かせませんでした。
特にsubplots()で作成した後に、一つずつヒストグラムを入れていく方法が分からないです。
(https://qiita.com/Keyskey/items/5d1a2e516b5593a3bbed)
(http://bicycle1885.hatenablog.com/entry/2014/02/14/023734)
該当のソースコード BAのコード
Python3
1import os 2import glob 3import numpy as np 4import pandas as pd 5import matplotlib.pyplot as plt 6import seaborn as sns 7 8def identification_filetype(path): 9 _, ext = os.path.splitext(path) 10 if ext == ".csv": 11 return pd.read_csv(path, encoding="shift-jis") 12 elif ext == ".txt": 13 return pd.read_csv(path, encoding="shift-jis", sep="\t") 14 15def Convert_Onedimensional_Array(df): 16 df1 = df.drop(df.columns[0], axis=1) 17 df2 = df1.values 18 df3 = df2.flatten() 19 return df3 20 21 22PathName = "C://Users//For Programming//Documents//Python Scripts//test//*.csv" 23AnalysisObject_files= glob.glob(PathName) 24 25All_Data = [] 26for i in AnalysisObject_files: 27 df = identification_filetype(i) 28 df1 = Convert_Onedimensional_Array(df) 29 All_Data.append(df1) 30 31 32fig, axes = plt.subplots(nrows=10, ncols=10) 33 34for data, ax in zip(All_Data, axes.ravel()): 35 ax.hist(data) 36 37 38plt.tight_layout() 39plt.show()
試したこと
"試したこと"というほどの事はできていないのですが、グラフが100個あるので、下に書いたような手動な方法ではなく、for文での自動的な処理で100個のグラフを作成したいです。
Python3
1fig, (ax1, ax2, ax3,....,axn) = plt.subplots(1, n, figsize=(40, 10))
補足情報(FW/ツールのバージョンなど)
直接的な解決案の回答でなくとも、参考になりそうなサイト、類似の事例を教えて頂けると幸いです。
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/19 12:39
2020/02/19 13:06
2020/02/19 13:17 編集