最初に
この質問は直接的な解決策が欲しく質問するというよりかは、(自分の問題解決能力向上のため)実現したい課題に対して必要な要素をピックアップして、その要素をどういった方法で解けば良いか、コーディングの方針をお伺いしたいという類の質問です。
実装したい事
Pythonのmatplotlibを使用して下の写真の様なグラフの作成を自動化したいと思っています。
自動化のイメージとしては、for文を使って一気に全てのグラフを描写するのではなく、下記のデータセットのBeanNumber
をコードに打ち込むとそのBeanNumberのグラフが生成されるようなイメージです。
(Pythonでいうと def makefigure (Specific) みたいな感じで関数を作って、(Specific)の部分にBeanNumberを
入れるとグラフが描写される、SQLだとSELECT文で特定のBeanNumeberだけ抜き出す、Excell的にはフィルターをかける、といった感じのすごい曖昧なイメージです。)
実現に必要な要素
・下記のデータセットの様に複数の"BeanNumber"があるなかで、ひとつの"BeanNumber"のみを選んで、それをグラフで作成する。
・極力手作業を減らすため、下記の「データの書式」のコードの中の「#★」に書いてある"Hoge!"を
"BeanNumber"と対応する"Sumple"に置き換える。
###使用するデータセット(book1.csv)
各サンプル100個づつあります。(B2が100,B3が100,B4が100,,,,,,,,B39が100)
Long axis | Short axis | Grain thickness | Sumple | BeanNumber |
---|---|---|---|---|
0.92 | 0.91 | 0.73 | くるみ豆 | B2 |
0,90 | 0.89 | 0.56 | くるみ豆 | B2 |
1.04 | 0.97 | 0.63 | くるみ豆 | B2 |
... | ||||
0.97 | 0.92 | 0.74 | 五葉黒豆 | B6 |
0.97 | 0.88 | 0.51 | 五葉黒豆 | B6 |
... | ||||
1.21 | 0.95 | 0.77 | 濃緑丸豆 | B39 |
0.92 | 0.85 | 0.83 | 濃緑丸豆 | B39 |
0.93 | 0.90 | 0.55 | 濃緑丸豆 | B39 |
1.10 | 0.96 | 0.67 | 濃緑丸豆 | B39 |
0.91 | 0.85 | 0.54 | 濃緑丸豆 | B39 |
データの書式
Python3
1import os 2import matplotlib 3import matplotlib.pyplot as plt 4import matplotlib.font_manager as fm 5import pandas as pd 6 7os.chdir("C://Users//For Programming//Documents") 8pd.options.display.max_rows = 5 9df1=pd.read_csv("book1.csv",encoding='shift_jis') 10df1.columns 11 12plt.rcParams['font.family'] = 'IPAPGothic' 13plt.rcParams['axes.linewidth'] = 3.0 14plt.rcParams["font.size"] = 30 15 16fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(40,10)) 17plt.subplots_adjust(wspace=0.3, hspace=0.2) 18 19 20ax1.set_xlabel('長軸(cm)') 21ax1.set_ylabel('個数(個)') 22ax1.set_title("Hoge!の長軸")#★ 23ax1.hist(df1['Long axis'], rwidth=0.7,edgecolor="k",color='#0000CD') 24ax1.set_xticks( [0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4] ) 25ax1.set_yticks( [5,10,15,20,25,30] ) 26 27 28 29ax2.set_xlabel('短軸(cm)') 30ax2.set_ylabel('個数(個)') 31ax2.set_title("Hoge!の短軸")#★ 32ax2.hist(df1['Short axis'], rwidth=0.7,edgecolor="k",color='#0000CD') 33ax2.set_xticks( [0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4]) 34ax2.set_yticks( [5,10,15,20,25,30] ) 35 36 37ax3.set_xlabel('粒厚(cm)') 38ax3.set_ylabel('個数(個)') 39ax3.set_title("Hoge!の粒厚")#★ 40ax3.hist(df1['Grain thickness'],rwidth=0.7,edgecolor="k",color='#0000CD') 41ax3.set_xticks( [0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4]) 42ax3.set_yticks( [5,10,15,20,25,30] ) 43 44plt.savefig('Hoge!.jpg')#★ 45
補足情報(FW/ツールのバージョンなど)
Anaconda
Python
Pycharm
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
回答1件
あなたの回答
tips
プレビュー