Matplotlib 烛台图
在本演示中,我们将介绍烛台图或绘图,并了解如何使用 Python Matplotlib 中的 mplfinance
模块创建 OHLC(开盘价、最高价、最低价、收盘价)烛台图。
使用 Matplotlib 中的 mplfinance
库创建烛台图
Matplotlib 金融 API 使绘制股价变得容易。它需要安装在我们机器上的 pandas
和 mplfinance
模块。
mplfinance
模块可以非常轻松地完成各种操作,例如 OHLC 图表、烛台图甚至是点数图,所有这些都在一条线上。
举个例子,首先要做的是获取一些数据。我们从雅虎财经下载了 2019 年至 2020 年的亚马逊股价。
要下载,请转到雅虎财经,搜索亚马逊,然后转到历史数据选项卡,以便下载。我们使用的是亚马逊的股价,但你可以使用任何你喜欢的数据股价。
如果你的机器上没有安装 mplfinance
模块,你必须安装它。
pip install mplfinance
导入以下所需模块。
# %matplotlib inline
import pandas as pd
import mplfinance as mplf
下面这一行将在不使用 show()
方法的情况下内联显示我们的绘图或图表,但是如果我们使用不同的 IDLE,例如 pycharm
,我们不需要编写这一行,因为它会产生错误。
%matplotlib inline
让我们创建一个名为 file
的变量,并将其作为我们下载的 CSV 文件的名称。确保你位于正确的文件路径位置,否则你必须将路径放在这里并使用 os
Python 包。
file = "AMZN.csv"
然后我们将创建一个数据框并读取 CSV 文件。
data = pd.read_csv(file)
下面称为数据框。它是 252 行乘 7 列,我们在这里有这些列,可以看到它是自动索引的。
data
如果你将代码写入不同的 IDLE,则上述行将不起作用。你需要打印它以查看你的数据。
有时当我们从 yahoo 下载数据时,列的名称前面有空格。这可能很烦人,所以你必须改变它。
我们将把 Date
列转换为 datetime
,因为对象是一个字符串。我们需要使用 pandas to_datetime()
方法将其转换为 datetime
。
我们可以使用 info()
方法查看 Date
列的摘要及其数据类型。
data.Date = pd.to_datetime(data.Date)
data.info()
当我们执行它时,我们现在将看到我们有一个 datetime
数据类型,而不是之前我们有一个对象。
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 252 entries, 0 to 251
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 252 non-null datetime64[ns]
1 Open 252 non-null float64
2 High 252 non-null float64
3 Low 252 non-null float64
4 Close 252 non-null float64
5 Adj Close 252 non-null float64
6 Volume 252 non-null int64
dtypes: datetime64[ns](1), float64(5), int64(1)
memory usage: 13.9 KB
如果我们想操纵这些数据来显示我们的图表,我们需要访问日期
列,因为我们将显示与日期相对应的股价。我们需要使索引成为我们数据框的 Date
列,并且该索引将自动添加填充。
data = data.set_index("Date")
data
Date
列现在是我们的索引。
我们将在以下示例中使用财务 API。我们有我们的数据和类型 mplf
,这是我们对 mplfinance
模块的引用。
我们从这个模块调用 plot()
方法。
# %matplotlib inline # remove this line when use do not use jupyter notebook
import pandas as pd
import mplfinance as mplf
file = "AMZN.csv"
data = pd.read_csv(file)
data.Date = pd.to_datetime(data.Date)
data.info()
data = data.set_index("Date")
mplf.plot(data)
# use this when you are not using jupyter notebook
mplf.show()
如果我们想显示体积,我们将制作一个线图,因为在这个比例上更容易看到并且体积为 True
。
# %matplotlib inline # remove this line when we use jupyter notebook
import pandas as pd
import mplfinance as mplf
file = "AMZN.csv"
data = pd.read_csv(file)
data.Date = pd.to_datetime(data.Date)
data.info()
data = data.set_index("Date")
mplf.plot(data, type="line", volume=True)
# use this when you are not using jupyter notebook
mplf.show()
我们有一个与 OHLC 图不同的线图。我们也有卷,所以我们可以看到它在这里为我们做了一些事情。
它已经标记了轴并旋转了这些标签。
让我们在 pandas 中使用时间序列寻找几个月。我们使用 mav
参数将 5 月至 7 月的数据放入移动平均线,然后我们将类型指定为名为 candlestick
的蜡烛,我们将保持交易量。
# %matplotlib inline # remove this line when wuse do not use jupyter notebook
import pandas as pd
import mplfinance as mplf
file = "AMZN.csv"
data = pd.read_csv(file)
data.Date = pd.to_datetime(data.Date)
data.info()
data = data.set_index("Date")
mplf.plot(
data.loc["2020-03":"2020-07"],
figratio=(20, 12),
title="Amazon price 2019 - 2020",
type="candle",
mav=(20),
volume=True,
)
# use this when you are not using jupyter notebook
mplf.show()
如果我们执行代码,我们会得到一个烛台,一个 OHLC 图表,其交易量仅用于移动平均线。
我们可以使用 style
参数来更改绘图外观的样式,将 "yahoo"
设置为此方法的值。
# %matplotlib inline # remove this line when wuse do not use jupyter notebook
import pandas as pd
import mplfinance as mplf
file = "AMZN.csv"
data = pd.read_csv(file)
data.Date = pd.to_datetime(data.Date)
data.info()
data = data.set_index("Date")
mplf.plot(
data.loc["2020-03":"2020-07"],
figratio=(20, 12),
title="Amazon price 2019 - 2020",
type="candle",
mav=(20),
volume=True,
style="yahoo",
)
# use this when you are not using jupyter notebook
mplf.show()
相关文章
如何在 Matplotlib Pyplot 中显示网格
发布时间:2024/02/04 浏览次数:127 分类:Python
-
本文演示了如何在 Python Matplotlib 中在一个图上画一个网格。使用 grid()函数来绘制网格,并解释了如何改变网格颜色和线条类型。
在 Matplotlib 中的图中添加文字
发布时间:2024/02/04 浏览次数:148 分类:Python
-
本教程展示了我们如何使用 plt.text()方法在 Matplotlib 中为图或轴添加文字。
如何在 Matplotlib 中的多个线条之间进行填充
发布时间:2024/02/04 浏览次数:187 分类:Python
-
`fill_between()` 每次只能填充两条线之间的区域,但是我们可以选择一对行来填充多个线条之间的区域。
如何在 Matplotlib 中画一条任意线
发布时间:2024/02/04 浏览次数:154 分类:Python
-
本教程讲解了我们如何在 Matplotlib 中使用 matplotlib.pyplot.plot()、matplotlib.pyplot.vlines()、matplotlib.pyplot.hlines()方法和 matplotlib.collection.LineCollection 绘制任意线条。
Pandas 在 Matplotlib 柱状图上绘制多列图
发布时间:2024/02/04 浏览次数:173 分类:Python
-
在本教程中,我们将探讨如何使用 `DataFrame` 对象的 `plot()` 方法在柱状图上绘制多列。
如何在 Matplotlib 中绘制数据列表的直方图
发布时间:2024/02/04 浏览次数:166 分类:Python
-
本教程介绍了如何使用 plt.hist()方法从数据列表中绘制直方图。我们可以使用 plt.hist()方法从数据列表中绘制直方图。
Matplotlib 中的叠加条形图
发布时间:2024/02/04 浏览次数:171 分类:Python
-
本教程展示了如何使用 plt.bar()方法将某些数据集的条形图堆叠在另一个数据集上。我们在 Matplotlib 中使用 matplotlib.pyplot.bar()方法生成条形图。
在 Python Matplotlib 中生成反向色彩图
发布时间:2024/02/04 浏览次数:58 分类:Python
-
本教程解释了如何反转 Python Matplotlib Plot 的 Colormap。
设置 Matplotlib 网格间隔
发布时间:2024/02/04 浏览次数:174 分类:Python
-
本教程将介绍我们如何在 Matplotlib 绘图中设置网格间距,并对主要网格和次要网格应用不同的样式。