web-dev-qa-db-ja.com

python)でローソク足をプロットする方法

ローソク足で簡単なプロットを作成しようとしています。そのために、Yahooからデータを取得し、関数candlestick2_ohlcを使用してプロットします。目標は、を使用してjpgファイルで画像をエクスポートすることです。

これは私が使用しているコードです:

from pandas_datareader import data
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
import matplotlib.dates as mdates
import fix_yahoo_finance as yf
import datetime

start = datetime.date(2018, 1, 1)
end = datetime.date.today()

aapl = yf.download("AAPL",start,end) 
aapl.reset_index(inplace=True)

aapl['Date'] = aapl.index.map(mdates.date2num)

fig, ax = plt.subplots()
plt.xlabel("Date")
plt.ylabel("Price")

candlestick2_ohlc(ax, aapl.Open, aapl.High, aapl.Low, aapl.Close, width=1, colorup='g')
plt.savefig('my_figure.png')
plt.show()

私の最初の質問は、それを行う別の簡単な方法がありますか?財務データを扱う例を教えてください。私は通常、Rでquantmodを使用します。

2番目の質問は次のとおりです。私の例では、X軸に日付がありません。 X軸に日付を含むプロットを表示するにはどうすればよいですか?日付をAX形式に変換する必要がありますが、簡単な方法がわかりません。

ありがとう

3

まず、以下を使用してplotlyパッケージをインストールする必要があります。

pip install plotly

次に、次のコードと同じくらい簡単にキャンドルプロットをプロットできます。

import plotly.graph_objects as go

import pandas as pd
from datetime import datetime

df = pd.read_csv('your_file_address')

fig = go.Figure(data=[go.Candlestick(x=df['name_of_time_column'],
                open=df['name_of_open_column'],
                high=df['name_of_high_column'],
                low=df['name_of_low_column'],
                close=df['name_of_close_column'])])

fig.show()
3
Mostafa Ghadimi

Plotlyを使用すると、1行のコードでローソク足チャートをプロットできます。

df[['Open', 'High', 'Low', 'Close']]['2018-01-01':'20XX-XX-XX'].iplot(kind="candle")

Plotlyを使用する前に、コマンドラインでplotlyとpipを使用したカフリンクスをインストールする必要があります。

pip install plotly

pip install cufflinks

また、JupiterNotebookの上部に以下をインポートする必要があります。

from plotly import __version__

import cufflinks as cf

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

init_notebook_mode (connected=True)

cf.go_offline()
2
user11963609

Matplotですべてを行うことができます(Boxplotを使用)

...
df = pdr.data.get_data_yahoo(ticker, start='2012-01-01', end='2012-10-10)
df = df[['Open', 'High', 'Low', 'Close']]

fig, ax1 = plt.subplots(figsize=(14,7), num='figure name')

ax1.set_title('box title')
ax1.yaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.5)
ax1.xaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.5)

bp = ax1.boxplot(df, patch_artist=True, labels=df.index.astype(str))

# green up, red down
for count_box in range(len(df.index)):
    if (df.iloc[count_box,0]-df.iloc[count_box,3])>=0:
       plt.setp(bp['boxes'][count_box], color='red')
    else:
       plt.setp(bp['boxes'][count_box], color='green')

 plt.xticks(rotation=30)
 plt.show() #or plt.savefig() ...
0
I value -u 2