当前位置:   article > 正文

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

python subplot

目录

1.Subplot函数简介

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

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

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

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

1.Subplot函数简介

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

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

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

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44254
推荐阅读
相关标签
  

闽ICP备14008679号