質問: やろうとしていること ---------- csvファイルからグラフを作成しています。 教えていただきたいこと ----------- **その1** from pylab import * と記述していますが、importのあとの*の意味を理解できておりません。 **その2** from pylab import * この記述を削除すると、 grid(True) の部分でエラーが発生します。 グラフの描画は、pyplotが行っていると考えていたので、 pylabは削除しても良いと考えていましたが、エラーがでてしまいます。 pylabは何をしているのでしょうか。 ``` grid(True) NameError: name 'grid' is not defined ``` プログラムコード -------- ``` #!/usr/bin/python3 # -*- coding: utf-8 -*- #グラフ表示 import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt #CSVファイル読み書き import csv from pylab import * #temp def drawingTemp(): temp=[0 for i in range(MAX_RANGE)] date=[0 for i in range(MAX_RANGE)] span=[] for i in range(MAX_RANGE): span.append(1000/MAX_RANGE*i) fp=open(URL_PATH+"temp.csv","r") reader=csv.reader(fp) for row in reader: temp.pop(0) temp.append(float(row[5])) date.pop(0) #month/date_hour:minute date.append("%02d"%int(row[1])+"/"+"%02d"%int(row[2])+"_"+"%02d"%int(row[3])+":"+"%02d"%int(row[4])) fp.close() fig=plt.figure(figsize=(16,9)) ax=fig.add_subplot(1,1,1) plt.title("Temperature") plt.gca().get_yaxis().get_major_formatter().set_useOffset(False) plt.xlabel("month/date_hour:minute") plt.ylabel("degree Celsius") plt.plot(temp,color="m",marker='o') plt.xticks(range(MAX_RANGE),date) grid(True) labels=ax.set_xticklabels(date,rotation=90,fontsize="small") plt.savefig(URL_PATH+"temp.png",bbox_inches="tight") ```
回答: > > その1 > > from pylab import * > > と記述していますが、importのあとの*の意味を理解できておりません。 > > > pylabの関数などを、`pylab`などの名前空間の指定をせずに直接呼び出せるようにするもの。 あなたが使っている`grid`はpylabの関数なので、通常なら、 ``` import pylab pylab.grid(True) ``` のように指定するところを、`grid(True)`だけで呼び出せるようにしている。 > > その2 > > from pylab import * > > この記述を削除すると、 > > grid(True) > > の部分でエラーが発生します。 > > > 上記の記述を削除するとpylabのimport自体が行なわれないので、当然エラーが発生する。 > > グラフの描画は、pyplotが行っていると考えていたので、 > > pylabは削除しても良いと考えていましたが、エラーがでてしまいます。 > > pylabは何をしているのでしょうか。 > > > `grid(True)`を実行している。 これを`plt.grid(True)`に変更すれば、plt(すなわちmatplotlib.pyplot)の`grid`を使うことになるので、pylabを削除しても動作するようになる。