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库与数据可视化②–常见图形的绘制(柱状图,直方图,饼图,箱线图)

目录
相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
28 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
104 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
72 20
|
2月前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
126 3
|
2月前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
59 9
|
2月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
43 2
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
103 8
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码

推荐镜像

更多