Python--Matplotlib库与数据可视化③--Figures、Axes对象与多图绘制

简介: Python--Matplotlib库与数据可视化③--Figures、Axes对象与多图绘制

Matplotlib绘图的一大特色是面向对象绘图。面向对象绘图是指将图形的元素看作一个对象,众多对象具有隶属关系,不同对象拼凑成一个完整的图形。

1. Figure、Axes对象

1.1 Figure对象

类比一下生活中用纸笔绘图,我们需要先找到一张白纸,在白纸上绘图。使用Matplotlib面向对象绘图,绘图前我们要先创建一个Figure对象,Figure对象是一个空白区域。Figure对象可以通过pyplot包中的figure函数进行创建。

fig = plt.figure()

1.2 Axes对象

  • 在Matplotlib绘图中,每个Figure对象可以包含一个或者几个Axes对象,每个Axes对象即一个绘图区域,其拥有自己独立的坐标系统。
  • 由此也可以看出Axes对象依附于Figure对象。
# 创建两个Axes对象
ax1 = fig.add_axes([0.1, 0.1, 0.3, 0.3])
ax2 =fig.add_axes([0.5, 0.5, 0.4, 0.4])
  • 其中,[0.1, 0.1, 0.3, 0.3]和[0.5, 0.5, 0.4, 0.4]分别制定绘图区域,每个列表的前两个元素指定Axes对象区域的左下角坐标,后两个元素指定Axes对象在Figure图像坐标X方向和Y方向的长度。即将整个figure区域参考为长于宽均为1的区域,ax1的左下角会出现在整个figure界面的(0.1,0.1)坐标处,长宽分别为0.3和0.3;ax2的左下角会出现在(0.5,0.5)坐标处,长宽分别为0.4和0.4。
    具体如图所示:

在这里插入图片描述

1.3 绘制折线部分

  • 下边,在ax1中绘制最近10个交易日的收盘价曲线,在ax2中绘制最近10个交易日的开盘价曲线。
# 假设Open和Close为定义过的开盘价和收盘价的Series对象。
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.3, 0.3])
ax2 =fig.add_axes([0.5, 0.5, 0.4, 0.4])
ax1.plot(Close[-10:])
ax2.plot(Open[-10:])

如图所示:
在这里插入图片描述

1.4 增加其他信息

fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.3, 0.3])
ax2 =fig.add_axes([0.5, 0.5, 0.4, 0.4])
ax1.plot(Close[-10:])
ax2.plot(Open[-10:])
plt.rcParams['font.sans-serif'] = ['SimHei']   # 显示中文设置
ax1.set_title('近十个交易日收盘价')           # 设置标题
ax1.set_xlabel('日期')                               # 设置X坐标轴标签
ax1.set_xticklabels(Close.index[-10:], rotation=25)   # 设置刻度字体旋转角度
ax1.set_ylabel('收盘价')                         # Y坐标轴标签
ax1.set_ylim(27,35)                               # Y坐标轴取值范围
ax2.set_title('近十个交易日开盘价')
ax2.set_xlabel('日期')
ax2.set_xticklabels(Close.index[-10:], rotation=25)
ax2.set_ylabel('开盘价')
ax2.set_ylim(27,32)

在这里插入图片描述

2. 多图绘制

2.1多个子图绘制

  • 在实际绘图中,如果一个Figure对象包含多个Axes对象,每个Axes对象的位置除了通过区域坐标和长度来设定以外更常用的方式是通过子图subplot()函数来设定。
ax1=plt.subplot(221)
ax1.set_title('ax1')
ax2=plt.subplot(222)
ax2.set_title('ax2')
ax3=plt.subplot(223)
ax3.set_title('ax3')
ax4=plt.subplot(224)
ax4.set_title('ax4')

参数“221”中的“22”表示子图排列为2×2形式(2行2列),“1”表示第一个子图,默认次序为,先从第一行从左到右,再逐行向循环下计序。具体如图所示:
在这里插入图片描述
接下来,绘制北方华创(002371.SZ)股票2020年收盘价曲线图和成交量柱状图。若当日收盘价大于等于开盘价,则成交量柱状图棒的颜色为红色;若当日收盘价低于开盘价,则成交量棒为绿色。

  • 首先通过Tushare获取股价数据
# 导入相关的库
import tushare as ts      
import pandas as pd   
import matplotlib.pyplot as plt

# 设置token,即接口密匙, 获取方式及相关权限详情见Tushare官网。
token = 'Your token'     
pro = ts.pro_api(token)

 # 获取日行情的接口。
df = pro.daily(ts_code='002371.SZ')   
df['trade_date'] = pd.to_datetime(df['trade_date'])  
df.set_index(['trade_date'], inplace=True)

# 倒序,因为Tushare的数据最近日期默认显示在DataFrame上方位置。倒序方便后作图。
 df = df.sort_index()  
 # 取2020年的数据
Close = df.close['2020']   
Open = df.open['2020']
Vol = df.vol['2020']

绘图:

plt.rcParams['font.sans-serif'] = ['SimHei']   # 显示中文设置
ax1 = plt.subplot(211)  #2行1列
ax1.plot(Close,color='k')
ax1.set_ylabel('收盘价')
ax1.set_title('北方华创2020年收盘价曲线图')
ax2 = plt.subplot(212)
left1 = Vol.index[Close>=Open]
hight1 = Vol[left1]
ax2.bar(left1, hight1, color='r')
left2 = Vol.index[Close<Open]
hight2 = Vol[left2]
ax2.bar(left2, hight2, color='g')
ax2.set_ylabel('成交量')
ax2.set_title('北方华创2020年成交量柱状图')

图像效果如图所示:
在这里插入图片描述

2.2 一个图中多条曲线绘制

  • 将北方华创(002371.SZ)2020年的开盘价,最高价,最低价和收盘价曲线绘制在一张图中为例。代码如下:
# 提取出最高价和最低价
High = df.high['2020']
Low = df.low['2020']

plt.rcParams['font.sans-serif'] = ['SimHei']   # 显示中文设置

# 创建Axes对象
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

# 绘制四条曲线
ax.plot(Open, '--*', label='开盘价')
ax.plot(High, '-+', label='最高价')
ax.plot(Low, '-.>', label='最低价')
ax.plot(Close,label='收盘价')

# 在axes对象中增加文本对象
ax.set_title('北方华创2020年价格图')
ax.set_ylabel('价格')
ax.legend(loc='best')

效果展示如图:
在这里插入图片描述
前文回顾:
Python–Matplotlib库与数据可视化①–修改图像属性

Python–Matplotlib库与数据可视化②–常见图形的绘制(柱状图,直方图,饼图,箱线图)

目录
相关文章
|
6天前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
48 20
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
155 10
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
172 77
|
2天前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
20天前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
48 9
|
17天前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
58 3
|
22天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
133 4
数据分析的 10 个最佳 Python 库
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
52 11
|
1月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
33 2