|
|
|||||||||||||||||||||||||||||
|
pylab_examples_Examples 18_loadrec. |
H.Kamifuji . |
|
この事例は、Windows10_1909 で Python 3.9.0 環境では、動作しません。( module 'matplotlib.mlab' has no attribute 'csv2rec' が削除されたのか? )
from __future__ import print_function
from matplotlib import mlab
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
datafile = cbook.get_sample_data('msft.csv', asfileobj=False)
print('loading', datafile)
a = mlab.csv2rec(datafile)
a.sort()
print(a.dtype)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(a.date, a.adj_close, '-')
fig.autofmt_xdate()
# if you have xlwt installed, you can output excel
try:
import mpl_toolkits.exceltools as exceltools
exceltools.rec2excel(a, 'test.xls')
except ImportError:
pass
plt.show()
|
![]() Python 3.11.2 見直しました。上記のコードでは、下記のエラーが発生します。 loading C:\Users\_____\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\mpl-data\sample_data\msft.csv Traceback (most recent call last): File "_:\loadrec.py", line 8, in <module> a = mlab.csv2rec(datafile) ^^^^^^^^^^^^ AttributeError: module 'matplotlib.mlab' has no attribute 'csv2rec' matplotlib 内部のエラーのようです。matplotlib の改修(先祖帰りバグの改修)を待つしかない。 Python 3.11.6 (matplotlib 3.7.1) では、下記のようなエラーがあり、実行できない。 loading C:\Users\_____\AppData\Local\Programs\Python\Python311\Lib \site-packages\matplotlib\mpl-data\sample_data\msft.csv Traceback (most recent call last): File "M:\______\loadrec.py", line 8, inPython 3.12.0 (matplotlib 3.7.1) では、下記のようなエラーがあり、実行できない。 loading C:\Program Files\Python312\Lib\site-packages\matplotlib\mpl-data\sample_data\msft.csv Traceback (most recent call last): File "E:\______\loadrec.py", line 8, inPython 3.11.6 (matplotlib 3.7.1) 及び Python 3.12.0 (matplotlib 3.8.1) で、見直し中、新しいサンプルが見つからないので、自力で改修しました。 msft.csv から date と close を抜き出し、datetime 配列 と float 配列 に変換するコードを作成しました。 今後、csv ファイル読取関数にまとめたい。
from __future__ import print_function
from matplotlib import mlab
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import datetime
dates = []
ycloses = []
s = ''
f = open('msft.csv', 'r')
k = 0
for line in f:
if (k > 0) & (len(line) > 2):
dlin = line.split(',')
j = 0
for dt in dlin:
if j == 0:
dates.append(dt)
if j == 2:
ycloses.append(dt)
j += 1
k += 1
f.close()
xdates = []
for dt in dates:
ddt = datetime.datetime.strptime(dt, "%d-%b-%y")
xdates.append(ddt)
ydatas = []
for dt in ycloses:
ydatas.append(float(dt))
###########
## datafile = cbook.get_sample_data('msft.csv', asfileobj=False)
## print('loading', datafile)
## a = mlab.csv2rec(datafile)
## a.sort()
## print(a.dtype)
###########
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(xdates, ydatas, '-')
fig.autofmt_xdate()
# if you have xlwt installed, you can output excel
try:
import mpl_toolkits.exceltools as exceltools
exceltools.rec2excel(a, 'test.xls')
except ImportError:
pass
plt.show()
Python 3.11.6 (matplotlib 3.7.1) 及び Python 3.12.0 (matplotlib 3.8.1) 共に、正常実行です。![]() |
|
pylab_examples_Examples code: loadrec.py |
|