株価の分析にpythonを活用したくて、
matplotlibを用いてグラフ化の勉強をしているのですが、
なぜかplt.hlinesで水平線を引くことが出来ません。
参考しにしているのは下記、キノコードさんの動画です。(12:30あたり)
リンク内容
import pandas as pd import numpy as np import talib as ta from pandas_datareader import data import matplotlib.pyplot as plt %matplotlib inline import warnings warnings.simplefilter('ignore') start = '2020-01-18' end = '2021-01-18' df = data.DataReader('^N225', 'yahoo', start, end) date=df.index close=df['Adj Close'] df['macd'], df['macdsignal'], df['macdhist'] = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9) plt.figure(figsize=(30,15)) plt.subplot(2,1,1) plt.plot(date,close,label='Close',color='#99b898') plt.legend() plt.subplot(2,1,2) plt.fill_between(date,df['macdhist'], color='grey', alpha=0.5, label='MACD_hist') plt.hlines(0,start,end,"gray",linestyles="dashed") plt.legend()
上記のコードの中で、
plt.hlines(0,start,end,'gray',linestyles='dashed')
の部分を削除して走らせると、何も問題はないのですが、
この一文を加えると、エラーが出ます。
(グラフは表示されますが、水平線が表示されません。)
ちなみに、試しに簡単なグラフで水平線を引いてみたのですが、
こちらはうまく出来ました。
from matplotlib import pyplot as plt plt.figure(figsize=(30,15)) xdata = list(range(10)) ydata = [_*2 for _ in xdata] plt.plot(xdata, ydata, 'b') plt.hlines(y=5, xmin=0, xmax=10) plt.vlines(x=5, ymin=0, ymax=20) plt.grid() plt.show()
エラー内容
AttributeError Traceback (most recent call last)
AttributeError: 'numpy.str_' object has no attribute 'toordinal'
The above exception was the direct cause of the following exception:
ConversionError Traceback (most recent call last)
ConversionError: Failed to convert value(s) to axis units: '2020-01-18'
あなたの回答
tips
プレビュー