|
|
|||||||||||||||||||||||||||||
|
pylab_examples_Examples 17_load_converter. |
H.Kamifuji . |
|
この事例は、Windows10_1909 で Python 3.9.0 環境では、動作しません。( from matplotlib.dates import bytespdate2num が削除されたのか? )
from __future__ import print_function
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates
from matplotlib.dates import bytespdate2num
# datafile = cbook.get_sample_data('msft.csv', asfileobj=False)
datafile = 'msft.csv'
print('loading', datafile)
dates, closes = np.loadtxt(datafile, delimiter=',',
converters={0: bytespdate2num('%d-%b-%y')},
skiprows=1, usecols=(0, 2), unpack=True)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot_date(dates, closes, '-')
fig.autofmt_xdate()
plt.show()
|
![]() Python 3.11.2 見直しました。上記のコードでは、下記のエラーが発生します。 Traceback (most recent call last): File "_:\load_converter.py", line 6, in <module> from matplotlib.dates import bytespdate2num ImportError: cannot import name 'bytespdate2num' from 'matplotlib.dates' (C:\Users\_____\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\dates.py) matplotlib 内部のエラーのようです。matplotlib の改修(先祖帰りバグの改修)を待つしかない。 Python 3.11.6 (matplotlib 3.7.1) では、下記のようなエラーがあり、実行できない。 Traceback (most recent call last): File "M:\______\load_converter.py", line 6, inPython 3.12.0 (matplotlib 3.8.1) では、下記のようなエラーがあり、実行できない。 Traceback (most recent call last): File "E:\______\load_converter.py", line 6, 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
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates
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))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot_date(xdates, ydatas, '-')
fig.autofmt_xdate()
plt.show()
Python 3.11.6 (matplotlib 3.7.1) 及び Python 3.12.0 (matplotlib 3.8.1) 共に、正常実行できる。![]() |
|
pylab_examples_Examples code: iload_converter.py |
|