如何在python中绘制烛台

Alb*_*era 5 python plot finance candlestick-chart

我正在尝试用烛台创建一个简单的图。为此,我从雅虎获取数据并使用功能烛台 2_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()
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是:还有另一种简单的方法吗?你能给我举个例子来处理财务数据吗?我通常在 R 中使用 quantmod。

第二个问题是:在我的示例中,X 轴中没有日期。我该怎么做才能在 X 轴中显示带有日期的图?我应该将 Date 转换为 AX 格式,但我不知道一种简单的方法。

谢谢

Mos*_*imi 10

有很多方法可以使用不同的包在 python 中绘制烛台,例如:

  1. 公共财政
  2. 情节地
  3. 鳍图
  4. 等等。

您还可以使用matplotlib包创建自己的专用烛台版本。

mplfinance包

您可以使用以下命令安装软件包:

pip install mplfinance
Run Code Online (Sandbox Code Playgroud)

然后,您应该按以下方式使用它:

  1. 索引应该来自DatetimeIndex格式。
  2. 该数据集应该有列命名为:High,Open,Close和Low。(区分大小写)
  3. (可选)如果要显示卷,Volume则需要命名列。

PS 1:您可以使用 pandasto_datetime方法创建 DatetimeIndex 。 PS 2:您可以使用rename数据框上的方法重命名列。

样本:

import pandas as pd
import mplfinance as mpf

df = pd.read_csv("<dataframe-path>", index_col=0)
mpf.plot(df, type='candle', style='yahoo', volume=True)

Run Code Online (Sandbox Code Playgroud)

plotly 包

首先,您需要plotly使用以下命令安装软件包:

pip install plotly
Run Code Online (Sandbox Code Playgroud)

然后,您可以像以下代码一样简单地绘制蜡烛图:

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()
Run Code Online (Sandbox Code Playgroud)

finplot 包

您可以使用以下命令安装 finplot 包:

pip install finplot
Run Code Online (Sandbox Code Playgroud)

那么,构建烛台图真的很容易。

例子:

import finplot as fplt
import pandas as pd
df = pd.read_csv("<data-path.csv>")

fplt.candlestick_ochl(df[['Open', 'Close', 'High', 'Low']])
fplt.show()
Run Code Online (Sandbox Code Playgroud)


Jon*_*röm 5

finplot有工作日期:

import finplot as fplt
import yfinance
df = yfinance.download('AAPL')
fplt.candlestick_ochl(df[['Open', 'Close', 'High', 'Low']])
fplt.show()
Run Code Online (Sandbox Code Playgroud)

finplot 显示你的日期

它不仅显示您的日期,而且还有许多改进(太多无法在此列出)。

免责声明:我不喜欢 matplotlib 和 plotly 的 API(以及性能和缺乏功能),因此创建了 finplot。它已经有 9% 的 mpl_finance 的 pypi 星星,所以检查一下!


小智 3

使用 Plotly,您可以用一行代码绘制烛台图。

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

在使用plotly之前,您需要pip在命令行中安装plotly和cufflinks:

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

您还需要在 Jupiter Notebook 顶部导入以下内容:

pip install plotly

pip install cufflinks
Run Code Online (Sandbox Code Playgroud)