python - 如何绘制烛台

标签 python plot finance candlestick-chart

我正在尝试用烛台创建一个简单的绘图。为此,我从雅虎获取数据并使用函数 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。

第二个问题是:在我的例子中,X轴上没有日期。我该如何显示 X 轴上带有日期的绘图?我应该将日期转换为 AX 格式,但我不知道一个简单的方法。

最佳答案

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

  1. mplfinance
  2. 阴谋
  3. finplot
  4. 等等

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

mplfinance 套餐

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

pip install mplfinance

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

  1. 索引应采用 DatetimeIndex 格式。
  2. 数据集应包含名为:HighOpenCloseLow 的列。 (区分大小写)
  3. (可选)如果您想显示音量,则需要 Volume 命名列。

PS 1:您可以使用 pandas to_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)

plotly 包

首先,您需要使用以下命令安装 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()

finplot 包

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

pip install finplot

然后,构建烛台图就非常容易了。

示例:

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()

关于python - 如何绘制烛台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697655/

相关文章:

r - 有没有一种简单的方法可以将预测恢复为时间序列以进行绘图?

javascript - FLOT 中的主要和次要刻度线

sql-server - 使用 T-SQL 将 OHLC 股票市场数据分组为多个时间范围

python - 安装和运行 pywin32 2.7 时出错

python - 如何在这个pygame程序中移动图片?

python - 为什么我的 "access grant malformed"在 Azure AD 中?

python - Pandas :分配具有多个条件和日期阈值的列

Python 使读取 Excel 文件的速度更快

python - Matplotlib.pyplot 标签不在标签中显示印地语文本,

r - PortfolioAnalytics 包中 optimize.portfolio 中的索引错误中的重复条目