我正在尝试用烛台创建一个简单的绘图。为此,我从雅虎获取数据并使用函数 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 中绘制烛台,例如:
- mplfinance
- 阴谋
- finplot
- 等等
您还可以使用 matplotlib
包创建您自己的专用烛台版本。
mplfinance 套餐
您可以使用以下命令安装该软件包:
pip install mplfinance
然后,您应该按如下方式使用它:
- 索引应采用
DatetimeIndex
格式。 - 数据集应包含名为:
High
、Open
、Close
和Low
的列。 (区分大小写) - (可选)如果您想显示音量,则需要
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/