数学建模--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:绘制不规则子图

python 复制代码
%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

python 复制代码
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
 
plt.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

python 复制代码
#利用gs来满足实际绘制的大部分要求
%matplotlib inline
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import numpy as np

x= 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()
相关推荐
workflower13 分钟前
活动图描述场景
开发语言·软件工程·需求分析·软件需求·敏捷流程
梦想的初衷~16 分钟前
基于现代R语言【Tidyverse、Tidymodel】的机器学习方法
开发语言·机器学习·r语言
liliangcsdn16 分钟前
mac mlx大模型框架的安装和使用
java·前端·人工智能·python·macos
香蕉可乐荷包蛋19 分钟前
Python学习之路(十三)-常用函数的使用,及优化
开发语言·python·学习
惜.己27 分钟前
使用python的读取xml文件,简单的处理成元组数组
xml·开发语言·python·测试工具
倔强青铜三36 分钟前
苦练Python第25天:玩转字典
人工智能·python·面试
倔强青铜三1 小时前
苦练Python第23天:元组秘籍与妙用
人工智能·python·面试
apihz1 小时前
域名WHOIS信息查询免费API使用指南
android·开发语言·数据库·网络协议·tcp/ip
coding随想1 小时前
掌控网页的魔法之书:JavaScript DOM的奇幻之旅
开发语言·javascript·ecmascript
Norvyn_71 小时前
LeetCode|Day18|20. 有效的括号|Python刷题笔记
笔记·python·leetcode