当前位置: 首页 > news >正文

数学建模--Subplot绘图的Python实现

目录

1.Subplot函数简介

2.Subplot绘图范例1:绘制规则子图

3.Subplot绘图范例2:绘制不规则子图

4.Subplot绘图范例3:gridspec辅助实战1

5.Subplot绘图范例4:gridspec辅助实战2

1.Subplot函数简介

"""
最近在数学建模种需要绘制多张子图,发现对于subplot函数的运用还不熟练
所以我们利用subplot绘制几张图片感受一下
""""""
subplot()的函数定义如下所示:
matplotlib.pyplot.subplot(*args, **kwargs)
#调用格式说明
subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
其实也没什么特别的,只要知道怎么划分子图即可
"""

2.Subplot绘图范例1:绘制规则子图

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure(figsize=(15,6))
fig.suptitle('Subplot Function Figrue 1')
x=[0,1,2,3]
y=[1,2,3,4]
y1=[1,4,9,16]
#分成8个子图
plt.subplot(2,4,1)   #占据第一个位置
plt.plot(y,color='r')
plt.subplot(2,4,2)   #占据第二个位置
plt.scatter(x,y,color='g',s=16,marker='*')
plt.subplot(2,4,3)   #占据第三个位置
plt.plot(x,y1,color='b')
plt.subplot(2,4,4)   #占据第四个位置
plt.scatter(x,y1,color='b',s=9)
x_1= np.random.normal(0, 1, 200)
y_1 = np.random.normal(0, 1, 200)
z = np.random.normal(10, 2, 200)plt.subplot(2,4,5)   #占据第五个位置
plt.scatter(x_1,y_1,c=z,cmap='rainbow',s=9)plt.subplot(2,4,6)   #占据第6个位置
plt.scatter(x_1,y_1,c=z,cmap='coolwarm',s=9)plt.subplot(2,4,7)   #占据第7个位置
plt.scatter(x_1,y_1,c=z,cmap='prism',s=9)plt.subplot(2,4,8)   #占据第8个位置
plt.scatter(x_1,y_1,c=z,cmap='summer',s=9)
plt.savefig(r'C:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\Figure\Subplot Function Figrue 1.png')
plt.show()

3.Subplot绘图范例2:绘制不规则子图

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号fig = plt.figure()
fig.suptitle('自主设计位置分布图')
x= np.random.normal(0, 1, 200)
y = np.random.normal(0, 1, 200)
z = np.random.normal(10, 2, 200)
#将图片分成3行3列,其占第一个位置
plt.subplot(3,3,1)  
plt.scatter(x,y,c=z,cmap='coolwarm',s=9)
#将图片分成3行2列,其占第三个位置
plt.subplot(3,2,3)   
plt.scatter(x,y,c=z,cmap='prism',s=9)
#将图片分成3行1列,其占第三个位置
plt.subplot(3,1,3)
plt.scatter(x,y,c=z,cmap='summer',s=9)
plt.savefig(r'C:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\Figure\自主设计位置分布图.png')
plt.show()

4.Subplot绘图范例3:gridspec辅助实战1

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspecplt.rcParams["font.sans-serif"] = ["SimHei"]
x_month = np.array(['1月', '2月', '3月', '4月', '5月', '6月'])
y_sales = np.array([2150, 1050, 1560, 1480, 1530, 1490])
x=np.array([1,2,3,4,5,6])
# 创建画布和布局 num:图形名称 figsize(5,5) 长宽就是5
fig = plt.figure(num=1, figsize=(5, 5))  
# 在画布上添加 :虚拟的gridspec网格规范 (3行3列)
gs = fig.add_gridspec(3, 3)
# 在画布上添加:子图 (子图位置第0行 和第1列 第2列 第3列交集)
ax_one = fig.add_subplot(gs[0, :])
# 第1个子图
ax_one.bar(x_month, y_sales, width=0.5, color='#3299CC')
ax_one.set_title('2022年上半年某品牌汽车的销售额(模拟数据)')
ax_one.set_ylabel('销售额(亿元)')ax_two=fig.add_subplot(gs[1:,0:2])
ax_two.scatter(x,y_sales,marker='*',color='r')
ax_two.set_ylabel('销售额(亿元)')ax_thr=fig.add_subplot(gs[1:,2])
ax_thr.plot(x,y_sales,marker='*',color='g')
ax_thr.set_yticks([])plt.savefig(r'C:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\Figure\2022年上半年某品牌汽车的销售额.png')
plt.show()

5.Subplot绘图范例4:gridspec辅助实战2

#利用gs来满足实际绘制的大部分要求
%matplotlib inline
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import numpy as npx= np.random.normal(0, 1, 200)
y = np.random.normal(0, 1, 200)
z = np.random.normal(10, 2, 200)
# 创建一个2x2的网格,第一个子图占据整个第一行,第二个子图占据第一行的后两列
gs = gridspec.GridSpec(2, 2, width_ratios=[1, 2])
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, 0])
ax3 = plt.subplot(gs[1, 1])# 在第一个子图中绘制
ax1.scatter(x,y,c=z,cmap='prism',label='prism',s=9)
ax1.set_xticks([])
ax1.set_yticks([])
ax1.legend()
# 在第二个子图中绘制一个散点图
ax2.scatter(x,y,c=z,cmap='summer',label='summer',s=9)
ax2.set_xticks([])
ax2.set_yticks([])
ax2.legend()# 在第三个子图中绘制一个柱状图
ax3.scatter(x,y,c=z,cmap='coolwarm',label='coolwarm',s=9)
ax3.set_xticks([])
ax3.set_yticks([])
ax3.legend()
plt.savefig(r'C:\Users\Zeng Zhong Yan\Desktop\py.vs\.vscode\数学建模\Figure\gs划分方法绘图.png')
# 显示图形
plt.show()

http://www.lryc.cn/news/156701.html

相关文章:

  • JMeter(三十九):selenium怪异的UI自动化测试组合
  • c++ 移动构造方法为什么要加noexcept
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
  • 手把手教你搭建园林园艺小程序商城
  • Java Iterator(迭代器)
  • Logstash同步MySQL数据到ElasticSearch
  • 【C++】运算符重载的示例实现和应用
  • Kubernetes禁止调度
  • CocosCreator3.8研究笔记(七)CocosCreator 节点和组件的介绍
  • Ceph入门到精通-C++入门知识点
  • Ansible之playbook详解和应用实例
  • 经验萃取方法
  • 手写apply方法
  • Jenkins实现基础CD操作
  • 开源软件合集(Docker)
  • Ceph入门到精通-生产日志级别设置
  • 16-MyCat
  • RKNPU2通用API和零拷贝API
  • LeetCode 1123. 最深叶节点的最近公共祖先:DFS
  • 多线程应用——线程池
  • OPENCV+QT环境配置
  • Kafka3.0.0版本——文件清理策略
  • SRT参数说明
  • vue响应式原理
  • elk安装篇之 Kibana安装
  • MySQL 用户授权管理及白名单
  • pc-签字画板vue-esign的使用
  • javaScript:节点操作
  • git 忽略已经提交的文件或文件夹 (修改.gitignore文件无效)
  • 学习左耳听风栏目90天——第十二天 12/90(学习左耳朵耗子的工匠精神,对技术的热爱)【时间管理:同扭曲时间的事儿抗争】