迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Matplotlib 烛台图

作者:迹忆客 最近更新:2024/02/01 浏览次数:

在本演示中,我们将介绍烛台图或绘图,并了解如何使用 Python Matplotlib 中的 mplfinance 模块创建 OHLC(开盘价、最高价、最低价、收盘价)烛台图。


使用 Matplotlib 中的 mplfinance 库创建烛台图

Matplotlib 金融 API 使绘制股价变得容易。它需要安装在我们机器上的 pandasmplfinance 模块。

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Matplotlib Pyplot 中显示网格

发布时间:2024/02/04 浏览次数:127 分类:Python

本文演示了如何在 Python Matplotlib 中在一个图上画一个网格。使用 grid()函数来绘制网格,并解释了如何改变网格颜色和线条类型。

如何在 Matplotlib 中画一条任意线

发布时间:2024/02/04 浏览次数:154 分类:Python

本教程讲解了我们如何在 Matplotlib 中使用 matplotlib.pyplot.plot()、matplotlib.pyplot.vlines()、matplotlib.pyplot.hlines()方法和 matplotlib.collection.LineCollection 绘制任意线条。

Matplotlib 中的叠加条形图

发布时间:2024/02/04 浏览次数:171 分类:Python

本教程展示了如何使用 plt.bar()方法将某些数据集的条形图堆叠在另一个数据集上。我们在 Matplotlib 中使用 matplotlib.pyplot.bar()方法生成条形图。

设置 Matplotlib 网格间隔

发布时间:2024/02/04 浏览次数:174 分类:Python

本教程将介绍我们如何在 Matplotlib 绘图中设置网格间距,并对主要网格和次要网格应用不同的样式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便