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


- %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()


- %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()


- #利用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()


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。