Matplotlib 子图的创建
2024-10-21 06:44:20
在matplotlib中,整个图像为一个Figure对象
在Figure对象中可以包含一个或者多个Axes对象 每个Axes对象相当于一个子图了
每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域
plt.figure, plt.subplot
1.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# 导入相关模块 # 子图创建1 - 先建立子图然后填充图表 fig = plt.figure(figsize=(10,6),facecolor = 'gray') ax1 = fig.add_subplot(2,2,1) # 第一行的左图
plt.plot(np.random.rand(50).cumsum(),'k--')
plt.plot(np.random.randn(50).cumsum(),'b--')
# 先创建图表figure,然后生成子图,(2,2,1)代表创建2*2的矩阵表格,然后选择第一个,顺序是从左到右从上到下
# 创建子图后绘制图表,会绘制到最后一个子图 ax2 = fig.add_subplot(2,2,2) # 第一行的右图
ax2.hist(np.random.rand(50),alpha=0.5) ax4 = fig.add_subplot(2,2,4) # 第二行的右图
df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax4.plot(df2,alpha=0.5,linestyle='--',marker='.')
# 也可以直接在子图后用图表创建函数直接生成图表
输出:
[<matplotlib.lines.Line2D at 0x1d078fe2e48>,
<matplotlib.lines.Line2D at 0x1d078fea2e8>,
<matplotlib.lines.Line2D at 0x1d078fea4e0>,
<matplotlib.lines.Line2D at 0x1d078fea668>]
2.
# 子图创建2 - 创建一个新的figure,并返回一个subplot对象的numpy数组 → plt.subplot fig,axes = plt.subplots(2,3,figsize=(10,4)) #因为这里返回两个对象,一个使整体图表的对象,一个是不同子图组成的数组
print(fig)
print(axes, axes.shape, type(axes))
ts = pd.Series(np.random.randn(1000).cumsum()) # 生成图表对象的数组 ax1 = axes[0,1] #指定了第0排第一个图表
ax1.plot(ts) df = pd.DataFrame(np.random.rand(100,2))
df.plot()
df.plot(ax = axes[1,0])
输出:
Figure(720x288)
[[<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4E8A2668>
<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4E620A90>
<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4E039358>]
[<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4DFB31D0>
<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4E4BFCC0>
<matplotlib.axes._subplots.AxesSubplot object at 0x0000026A4E0F7710>]] (2, 3) <class 'numpy.ndarray'>
<matplotlib.axes._subplots.AxesSubplot at 0x26a4dfb31d0>
3.
# plt.subplots,参数调整 fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
# sharex,sharey:是否共享x,y刻度 所有subplot之间应该使用相同的x轴刻度,相同的y轴刻度。 for i in range(2):
for j in range(2):
axes[i,j].hist(np.random.randn(500),color='k',alpha=0.5)
plt.subplots_adjust(wspace=0.5,hspace=0.5)
# wspace,hspace:用于控制子图之间的水平间隔和垂直间隔
输出:
最新文章
- SQL join中on与where区别
- 洛谷P2014 TYVJ1051 选课
- ci实现RBAC,详细解释原理和核心代码显示
- iOS 高级框架的介绍
- 理解perl的编码转换——utf8以及乱码
- python中文json串创建与解析
- 《Linux shell编程中 diff与vimdif的使用》RHEL6
- 【Centos7】5分钟理解防火墙firewalld
- Thrift教程初级篇——thrift安装环境变量配置第一个实例
- 阿里面试题BIO和NIO数量问题附答案和代码
- easyUI拖动课程进课程表
- Android UI系列-----RelativeLayout的相关属性
- SDL示例一:实现七段数码管的显示
- MAC机下用Terminal操作MySql
- Sublime 官方安装方法
- python操作txt文件中数据教程[2]-python提取txt文件
- 机器学习理论基础学习10--- 高斯混合模型GMM
- ionic生成签名的APK方法总结
- D. GCD Counting(树上dp)
- 开启Virtualization Technology
热门文章
- Spring MVC工程 无法拦截到url请求
- Database 2 Day DBA guide_Chapter3
- C++ double 小数精度控制
- POJ-2886 Who Gets the Most Candies?---线段树+约瑟夫环
- Android(java)学习笔记51:ScrollView用法
- Codeforces Round #431 (Div. 2)
- com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭
- 【Openjudge 9277 Logs Stacking堆木头】 题解
- HDU1215 七夕节(模拟 数学)
- Python程序的执行原理(转)