Python量化炒股常用的Matplotlib包

简介: Python量化炒股常用的Matplotlib包

Python量化炒股常用的Matplotlib包
Matplotlib 是一个用于创建数据可视化的 Python 库,可以绘制各种类型的图表,包括折线图、柱状图、散点图、饼图等。它提供了类似于 MATLAB 的界面,使得用户可以轻松地生成高质量的图形。

Matplotlib 的主要特点:

  • 灵活性: 可以绘制几乎所有类型的统计图表和科学图形。
  • 可定制性: 支持对图形的各个元素(线条、标签、标题等)进行个性化定制。
  • 交互性: 提供交互式功能,允许用户在图形上进行交互操作。
  • 支持多种输出格式: 可以将图形保存为图片文件(PNG、JPG 等)或嵌入到 Jupyter Notebook 中。
  • 广泛应用: 在数据分析、机器学习、科学研究等领域中被广泛使用。

示例代码:
绘制简单折线图:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()

绘制柱状图:

data = {
   'A': 10, 'B': 20, 'C': 15, 'D': 25}
names = list(data.keys())
values = list(data.values())

plt.bar(names, values)
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Chart')
plt.show()

绘制散点图:

import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = 1000 * np.random.rand(50)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Scatter Plot')
plt.colorbar()
plt.show()

通过 Matplotlib,用户可以根据不同需求快速生成各种类型的图表,帮助更好地理解数据、展示结果,并加强数据分析的可视化呈现。

figure()函数
figure()函数可以用于创建一个图形示例,即创建一个绘图的画布,其语法格式如下:

figure(num=None, figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)

figure()函数的各参数意义
figure() 函数是 Matplotlib 中用于创建新图形(Figure)的函数,它可以接受多个参数来调整图形的各种属性。以下是 figure() 函数中常用参数的意义:

num: 图形的编号(整数或字符串)。如果给定编号的图形已经存在,则将其激活并返回该图形对象;否则,将创建一个新的编号为 num 的图形。默认值为 None。

figsize: 以英寸为单位的图形大小,是一个二元组 (width, height)。例如 (6, 4) 表示宽度为 6 英寸、高度为 4 英寸。默认值为 (6.4, 4.8)。

dpi: 图形分辨率(每英寸点数),用于控制图形的清晰度。默认值为 100。

facecolor: 图形的背景颜色。可以使用颜色名称(如 'red')、RGB 元组(如 (0.2, 0.3, 0.4))或十六进制值(如 '#FFDD44')来指定。默认为 'white'。

edgecolor: 图形的边框颜色。与 facecolor 类似,可以使用颜色名称、RGB 元组或十六进制值来指定。默认为 'white'。

frameon: 控制是否绘制图形边框。如果设置为 False,则不绘制边框。默认为 True。

clear: 如果为 True,则在创建新图形之前清除当前图形。默认为 False。

Figure()函数示例代码:
要使用figure()函数,首先要导入Matplotlib中的pyplot模块。

单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 36)  # 设置x坐标值
y = 10 * x + 6  # 设置y坐标值
plt.figure()   # 创建默认的画布
plt.plot(x, y)  # 利用x和y坐标值在画布上绘制图形
plt.show()   # 显示绘制的图形

首先导入Numpy包,并设置别名np;然后导入Matplotlib中的pyplot模块,并设置别名plt。接着定义变量x为一个数组,变量y为变量x的一次方程。然后调用figure()绘制默认的画布,接着在画布上绘制图形,最后显示绘制的图形。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

在创建画布时,还可以进一步设置画布,修改plt.figure()如下:

plt.figure(figsize=(6,3), dpi=120,facecolor='pink')

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

通过调整 figure() 函数中的参数,可以自定义图形的外观和属性,使得生成的图形更符合需求和美观。

plot()函数
plot()函数用来绘制线条或标记的轴,其语法格式如下:

plot(*args, **kwargs)

参数是一个可变长度参数,允许多个x、y对和可选的格式字符串。

plot() 函数是 Matplotlib 中用于绘制图形的函数,主要用于绘制折线图、散点图等。plot() 函数接受多个参数来控制绘图的样式、颜色、标记等属性。以下是常用的 plot() 函数参数及其意义:

  1. x: x 轴数据值序列。
  2. y: y 轴数据值序列。
  3. color(或 c): 线条颜色。可以是颜色名称(如 'red')、RGB 元组(如 (0.2, 0.3, 0.4))或十六进制值(如 '#FFDD44')来指定。
  4. linestyle(或 ls): 线条风格。可选值有 '-'(实线)、'--'(虚线)、'-.'(点划线)、':'(点线)等。
  5. linewidth(或 lw): 线宽。
  6. marker: 数据点的标记类型。例如 'o'(圆圈)、'^'(三角形)、's'(正方形)等。
  7. markersize(或 ms): 标记大小。
  8. label: 曲线的标签,用于图例显示。
  9. alpha: 线条和标记的透明度。
  10. title: 图表标题。
  11. xlabel: x 轴标签。
  12. ylabel: y 轴标签。

利用plot()函数绘制图形
示例代码:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 绘制折线图
plt.plot(x, y, color='blue', linestyle='--', linewidth=2, marker='o', markersize=8, label='Data')
plt.title('Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()

image.png

通过调整 plot() 函数中的参数,可以自定义绘制的线条样式、颜色、标记形状等,使得生成的图形更具吸引力和可读性。Matplotlib 提供了丰富的参数选项,可以满足用户对图形样式的个性化需求。

利用plot()函数显示股票的收盘价图形
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
df = get_price('002465.XSHE', start_date='2024-03-3', end_date='2024-04-10', frequency='daily')
myc1 = df['close']
plt.figure(figsize=(12,3))
plt.plot(myc1, 'ob')
plt.show()

df是海格通信(002465)2024年03月3日~2024年04月10日的报价信息。变量myc1为df的收盘价,然后利用plot()显示海格通信(002465)2024年-03月3日~2024年04月10日的收盘价图形。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:
image.png

利用dataframe的plot()函数显示股票的图形
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
df = get_price('002465.XSHE', start_date='2023-07-3', end_date='2024-04-25',frequency='daily')
df.close.plot(color='red')
df.open.plot(color='blue')

在这里设置收盘价为红色、开盘价为蓝色。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:
image.png

subplot()函数
利用subplot()函数可以在同一图中绘制不同的内容,其语法结构如下:

subplot(nrows, ncols, plotNum)

注意:subplot()可以规划figure划分为n个子图,但每条subplot命令只会创建一个子图。

subplot()函数的各参数意义
subplot() 函数是 Matplotlib 中用于创建多个子图(Subplot)的函数,可以将多个图形显示在同一画布上。该函数接受多个参数来控制子图的布局和样式。以下是常用的 subplot() 函数参数及其意义:

  1. nrows: 子图的行数。
  2. ncols: 子图的列数。
  3. index: 当前子图位置编号,从左上角开始,按照从左到右、从上到下的顺序递增。
  4. projection: 投影类型,用于指定绘制子图的类型,如 3D 图形等。
  5. polar: 是否使用极坐标。
  6. sharex(或 sharey): 控制子图之间的 x 轴(或 y 轴)共享。可选值为 'all'、'row'、'col' 或 False。
  7. subplot_kw: 字典形式的关键字参数,用于传递给 add_subplot() 方法。

示例代码:

import matplotlib.pyplot as plt

# 创建一个 2x2 的子图布局
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title('Subplot 1')

plt.subplot(2, 2, 2)
plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
plt.title('Subplot 2')

plt.subplot(2, 1, 2)
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title('Subplot 3')

plt.tight_layout()  # 自动调整子图布局
plt.show()

image.png

利用subplot()函数绘制多个图形
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
y_tan = np.tan(x)
plt.figure(figsize=(12, 3))
# 建立subplot网格,高为2,宽为2
# 激活第一个subplot
plt.subplot(2, 2, 1)
# 绘制第一个图形
plt.plot(x, y_sin, 'ob')
plt.title('正弦曲线')

# 将第二个subplot激活,并绘制第二个图形
plt.subplot(2, 2, 2)
plt.plot(x, y_cos, '*m')
plt.title('余弦曲线')
# 将第二个subplot激活,并绘制第三个图形
plt.subplot(223)
plt.plot(x, y_tan, ':r')
plt.title('正切曲线')
# 展示图像
plt.show()

image.png

通过调用 subplot() 函数,并设定合适的参数,用户可以在同一画布上创建并展示多个子图,有助于比较不同数据之间的关系或趋势。Matplotlib 提供了丰富的子图布局选项,满足用户对多图显示的需求。

利用subplot()函数绘制股票图形
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
df = get_price('002465.XSHE', start_date = '2022-07-3', end_date='2024-04-25', frequency='daily')
myc1 = df['close']    # 收盘价
myc2 = df['volume']   # 成交量
plt.figure(figsize=(12, 6))
# 激活第一个subplot
plt.subplot(2, 1, 1)
plt.plot(myc1, '-b')   # 实线蓝色绘制收盘价格
plt.subplot(2, 1, 2)  
plt.plot(myc2, '-r')  # 实线红色绘制成家量
plt.show()

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

add_axes()函数
Add_axes()函数为新增子区域,该区域可以坐落在figure内任意位置,且该区域可以任意设置大小。

subplot() 函数是 Matplotlib 中用于创建多个子图(Subplot)的函数,可以将多个图形显示在同一画布上。该函数接受多个参数来控制子图的布局和样式。以下是常用的 subplot() 函数参数及其意义:

  1. nrows: 子图的行数。
  2. ncols: 子图的列数。
  3. index: 当前子图位置编号,从左上角开始,按照从左到右、从上到下的顺序递增。
  4. projection: 投影类型,用于指定绘制子图的类型,如 3D 图形等。
  5. polar: 是否使用极坐标。
  6. sharex(或 sharey): 控制子图之间的 x 轴(或 y 轴)共享。可选值为 'all'、'row'、'col' 或 False。
  7. subplot_kw: 字典形式的关键字参数,用于传递给 add_subplot() 方法。

示例代码:

import matplotlib.pyplot as plt

# 创建一个 2x2 的子图布局
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title('Subplot 1')

plt.subplot(2, 2, 2)
plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
plt.title('Subplot 2')

plt.subplot(2, 1, 2)
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title('Subplot 3')

plt.tight_layout()  # 自动调整子图布局
plt.show()

image.png

通过调用 subplot() 函数,并设定合适的参数,用户可以在同一画布上创建并展示多个子图,有助于比较不同数据之间的关系或趋势。Matplotlib 提供了丰富的子图布局选项,满足用户对多图显示的需求。

add_axes()函数的应用
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import matplotlib.pyplot as plt
# 新建figure
fig = plt.figure()
# 定义数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]
# 新建区域ax1
# figure的百分比,从figure 10% 的位置开始绘制,宽高是figure的80%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'c')
ax1.set_title('新建区域')
# 新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x, y, 'm')
ax2.set_title('嵌套区域')
plt.show()

add_axes方法有4个参数,分别是left、bottom、width和height。Left为左侧间距、bottom为底部间距、width为宽度、height为高度。需要注意的是,这4个参数的大小都在0到1之间。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

利用add_axes()函数绘制股票图形
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 新建figure
fig = plt.figure()
# 定义数据
df = get_price('002465.XSHE', start_date='2022-07-3', end_date='2024-04-25', frequency='daily')
myc1 = df['close']    # 收盘价
# 新建区域ax1
# figure的百分比,从figure 10%的位置开始绘制,宽高是figure的80%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(myc1, 'c')
ax1.set_title('新建区域')
# 新增区域ax2,嵌套在ax1内
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(myc1, 'm')
ax2.set_title('嵌套区域')
plt.show()

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:
image.png


legend()函数

legend()函数用于为图像添加图题,其语法结构如下:

legend(*args, **kwargs)

legend() 函数是 Matplotlib 中用于添加图例到图形中的函数,它用于标识不同数据系列或曲线的含义。通过 legend() 函数,用户可以在图形中直观地展示数据标签,帮助观众更好地理解绘制的图表。

legend() 函数的常用参数:

  1. labels: 图例标签文本列表,用于指定每个数据系列的名称。
  2. loc: 图例位置,控制图例显示在图形的哪个位置。常见取值有 'upper right'、'lower left'、'center' 等。
  3. title: 图例标题文本。
  4. bbox_to_anchor: 控制图例的实际位置。是一个二元组 (x, y),表示图例左下角边界与画布左下角边界的偏移量。
  5. shadow: 是否显示图例的阴影。
  6. fontsize: 图例文本的字体大小。
  7. borderpad: 图例内边距大小。
  8. fancybox: 是否使用圆角框样式。
  9. framealpha: 图例框的透明度。

示例代码:

import matplotlib.pyplot as plt

# 绘制折线图并添加图例
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

plt.plot(x, y1, label='Series 1')
plt.plot(x, y2, label='Series 2')

plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Line Plot with Legend')

plt.legend(loc='upper right', title='Legend', fontsize='medium', shadow=True)
plt.show()

image.png

通过调用 legend() 函数,并设定合适的参数,用户可以将图例添加到绘制的图形中,使得图表更具可读性和信息传达效果。 Matplotlib 提供了丰富的选项来自定义图例的外观和位置,以满足用户对图例显示的需求。

利用legend()函数为绘制图形添加标题
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,25)
flg, ax = plt.subplots()
ax.plot(x, x**3, label="y = x**3")
ax.plot(x, x**4, label="y = x**4")
ax.legend(loc=2); # 左上角
ax.set_xlabel("图形的x轴")
ax.set_ylabel("图形的y轴")
ax.set_title("利用legend()函数为绘制图形添加标题")

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:
image.png

这里发现,x轴、y轴及标题标签都比较小。下面来改变图题字体大小。具体代码如下:

matplotlib.rcParams.update({
   'font.size': 18, 'font.family': 'serif'})

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

利用legend()函数为股票图形添加图题
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = get_price('002465.XSHE', start_date='2022-07-3',end_date='2024-04-25',frequency='daily')
myc1 = df['close']    # 收盘价
myc2 = df['high']     # 最高价
matplotlib.rcParams.update({
   'font.size': 15, 'font.family':'serif'})
fig, ax = plt.subplots()
ax.plot(myc1, label='海格通信的收盘价')
ax.plot(myc2, label='海格通信的最高价')
ax.legend(loc=2);     # 左上角
ax.set_xlabel('海格通信的日期')
ax.set_ylabel('海格通信收盘价和最高价')
ax.set_title('海格通信的日线图')

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

grid()函数
用坐标对象中的grid()函数可以使用和取消网格线,也可以用plot函数中同样的关键字参数来定制网格样式。

利用grid()函数为绘制图形添加网格线
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 25)
fig, axes = plt.subplots(1, 2, figsize=(10, 3))
# 默认网格外观
axes[0].plot(x, x**1.2, x, x**2, lw=2)
axes[0].grid(True)
# 用户定义的网格外观
axes[1].plot(x, x**2, x, x**2.3, lw=3)
axes[1].grid(color='r', alpha=0.5, linestyle='dashed', linewidth=0.5)

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:
image.png

利用grid()函数为绘制股票图形添加网格线
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = get_price('002465.XSHE', start_date='2023-10-3', end_date='2024-04-25', frequency='daily')
myc1 = df['close']   # 收盘价
myc2 = df['high']    # 最高价
myc3 = df['open']    # 开盘价
myc4 = df['low']     # 最低价
matplotlib.rcParams.update({
   'font.size': 12, 'font.family': 'serif'})
fig, ax = plt.subplots()
ax.plot(myc1, 'b', label='海格通信的收盘价')
ax.plot(myc2, 'g', label='海格通信的最高价')
ax.plot(myc3, 'r', label='海格通信的开盘价')
ax.plot(myc4, 'k', label='海格通信的最低价')

ax.grid(True)
ax.legend(loc=3);  # 左下角
ax.set_xlabel('海格通信的日期')
ax.set_ylabel('海格通信的4种价格')
ax.set_title('海格通信的日线图')

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图:

image.png

相关文章
|
2天前
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
|
4天前
|
安全 Python
Python量化炒股的获取数据函数—get_industry()
Python量化炒股的获取数据函数—get_industry()
12 3
|
4天前
|
人工智能 数据可视化 搜索推荐
Python异常模块与包
Python异常模块与包
|
4天前
|
Python
Python量化炒股的获取数据函数—get_security_info()
Python量化炒股的获取数据函数—get_security_info()
10 1
|
4天前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
10 0
|
4天前
|
安全 数据库 数据格式
Python量化炒股的获取数据函数—get_fundamentals()
Python量化炒股的获取数据函数—get_fundamentals()
10 0
|
11月前
|
Python
项目依赖的python包requirements.txt文件的生成与安装
项目依赖的python包requirements.txt文件的生成与安装
295 0
|
5月前
|
Python Windows
Python分发包安装pip3
Python分发包安装pip3
29 0
python 获取当前项目引用的第三包(不是当前环境里面安装的所有安装包)
python 获取当前项目引用的第三包(不是当前环境里面安装的所有安装包)
下一篇
无影云桌面