当前位置:   article > 正文

python-matplotlib绘图总结(面对函数和面对对象绘图技巧)_plt.tight_layout(pad=0.3)

plt.tight_layout(pad=0.3)

环境 : matplotlib 3.1.0,  numpy 1.15.4

目录

使用matplotlib作图的两大方法

一 面对函数绘图(pyplot模块有大量函数,供用户调用)

1. 主要分为四个步骤:

2. 代码实例(单图和多图)

3. 图片展示

二 面对对象绘图(主要操作Figure和Axes对象)(推荐)

1. 主要分为四个步骤:

2. 代码实例(单图和多图)

3. 图片展示


使用matplotlib作图的两大方法

本教程可以作为科研作图模板, 涵盖了作图中很多小细节, 使用了matplotlib作图的常用函数和对象

一 面对函数绘图(pyplot模块有大量函数,供用户调用)

functions大都是从matlab移植过来的,熟悉matlab绘图的读者能够很快入门 

1. 主要分为四个步骤:

(1) 准备数据和创建画布; (2) 绘制线条、散点图; (3) 对线条、散点图、坐标轴进行描述;(4) 显示画布。

2. 代码实例(单图和多图)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  4. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  5. # 1. 准备数据
  6. np.random.seed(19680801)
  7. N, fonts = 50, 8
  8. x1 = np.linspace(0, 2*np.pi, num=1000)
  9. y1, yy1 = 0.2*np.sin(x1*10) + 0.75, 0.15*np.sin(x1*10+0.2) + 0.25
  10. x2, y2 = np.random.rand(N), np.random.rand(N)
  11. # 创建画布
  12. plt.figure(figsize=(6, 4), dpi=300)
  13. # 2.绘制线条、散点图
  14. plt.plot(x1, y1, color='r', linewidth=2, label="line 1")
  15. plt.plot(x1, yy1, color='g', linewidth=2, label="line 2")
  16. plt.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
  17. # 3. 对线条、散点图、坐标轴进行描述
  18. plt.xlim(0, 1)
  19. plt.ylim(0, 1)
  20. plt.xlabel('xlable', fontsize=fonts)
  21. plt.ylabel('ylabel', fontsize=fonts)
  22. xticklabels = np.arange(0, 1.2, 0.2)
  23. yticklabels = np.arange(0, 1.2, 0.2)
  24. plt.xticks(ticks=xticklabels, labels=[str(round(xx, 1)) for xx in xticklabels])
  25. plt.yticks(ticks=yticklabels, labels=[str(round(xx, 1)) for xx in yticklabels])
  26. plt.title("figure 1", fontsize=fonts)
  27. plt.legend(loc='upper left', fontsize=fonts)
  28. plt.grid(True)
  29. plt.tight_layout(pad=0.3)
  30. # 4. 显示并保存画布
  31. plt.savefig("./1.tiff")
  32. plt.show()
  33. ##############################################################################################################
  34. # 1.准备数据( 参上)
  35. # 创建画布
  36. plt.figure(figsize=(6, 3), dpi=300)
  37. # 2.对线条、散点图、坐标轴进行描述
  38. # 绘制第一个子图
  39. plt.subplot(121)
  40. plt.plot(x1, y1, color='r', linewidth=2, label="line 1")
  41. plt.plot(x1, yy1, color='g', linewidth=2, label="line 2")
  42. plt.xlim(0, 1)
  43. plt.ylim(0, 1)
  44. plt.xlabel('xlable', fontsize=fonts)
  45. plt.ylabel('ylabel', fontsize=fonts)
  46. plt.title("figure 2", fontsize=fonts)
  47. plt.legend(loc='upper left', fontsize=fonts)
  48. plt.grid(True)
  49. plt.tight_layout(pad=0.3)
  50. # 绘制第二个子图
  51. plt.subplot(122)
  52. plt.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
  53. plt.xlim(0, 1)
  54. plt.ylim(0, 1)
  55. plt.xlabel('xlable', fontsize=fonts)
  56. plt.ylabel('ylabel', fontsize=fonts)
  57. plt.title("figure 3", fontsize=fonts)
  58. plt.legend(loc='upper left', fontsize=fonts)
  59. plt.grid(True)
  60. plt.tight_layout(pad=0.3)
  61. # 4. 显示并保存画布
  62. plt.savefig("./2.tiff")
  63. plt.show()

3. 图片展示

二 面对对象绘图(主要操作Figure和Axes对象)(推荐)

理解了matplotliblib包里面的Figure和Axes对象, 绘制漂亮的科研图就能够运用自如、得心应手

1. 主要分为四个步骤:

(1) 准备数据;(2) 创建Figure和Axes对象;(3) 进行线条、散点图、坐标轴绘制和描述;(4) 显示画布。

2. 代码实例(单图和多图)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  4. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  5. # 1. 准备数据
  6. np.random.seed(19680801)
  7. N, fonts = 50, 8
  8. x1 = np.linspace(0, 2*np.pi, num=1000)
  9. y1 = 0.2*np.sin(x1*10) + 0.75
  10. yy1 = 0.15*np.sin(x1*10+0.2) + 0.25
  11. x2, y2 = np.random.rand(N), np.random.rand(N)
  12. # 2. 创建一个Figure对象和一个Axes对象
  13. fig, ax = plt.subplots(figsize=(6, 4), dpi=300)
  14. # 3 进行线条、散点图、坐标轴绘制和描述
  15. ax.plot(x1, y1, color='g', linewidth=2, label="line 1")
  16. ax.plot(x1, yy1, color='r', linewidth=2, label="line 2")
  17. ax.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
  18. ax.set_xlim(0, 1)
  19. ax.set_ylim(0, 1)
  20. ax.set_xlabel('xlable', fontsize=fonts)
  21. ax.set_ylabel('ylabel', fontsize=fonts)
  22. xticklabels = np.arange(0, 1.2, 0.2)
  23. yticklabels = np.arange(0, 1.2, 0.2)
  24. ax.set_xticks(xticklabels)
  25. ax.set_yticks(yticklabels)
  26. ax.set_xticklabels(labels=[str(round(xx, 1)) for xx in xticklabels], fontdict={'fontsize': fonts})
  27. ax.set_yticklabels(labels=[str(round(xx, 1)) for xx in yticklabels], fontdict={'fontsize': fonts})
  28. ax.set_title("figure 4", fontsize=fonts)
  29. ax.legend(loc='upper left', fontsize=fonts)
  30. ax.grid(True)
  31. fig.tight_layout(pad=0.3)
  32. fig.savefig("./3.tiff")
  33. # 4.显示画布
  34. plt.show()
  35. ###############################################################################
  36. # 1.准备数据(参上)
  37. # 2.创建一个Figure对象和两个Axes对象
  38. fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6, 3), dpi=300)
  39. # 3.对轴描述
  40. # 对轴一描述
  41. ax[0].plot(x1, y1, color='g', linewidth=2, label="line 1")
  42. ax[0].plot(x1, yy1, color='r', linewidth=2, label="line 2")
  43. ax[0].set_xlim(0, 1)
  44. ax[0].set_ylim(0, 1)
  45. ax[0].set_xlabel('xlable', fontsize=fonts)
  46. ax[0].set_ylabel('ylabel', fontsize=fonts)
  47. ax[0].set_title("figure 2", fontsize=fonts)
  48. ax[0].legend(loc='upper left', fontsize=fonts)
  49. ax[0].set_title("figure 5", fontsize=fonts)
  50. ax[0].grid(True)
  51. # 对轴二描述
  52. ax[1].scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
  53. ax[1].set_xlim(0, 1)
  54. ax[1].set_ylim(0, 1)
  55. ax[1].set_xlabel('xlable', fontsize=fonts)
  56. ax[1].set_ylabel('ylabel', fontsize=fonts)
  57. ax[1].set_title("figure 3", fontsize=fonts)
  58. ax[1].legend(loc='upper left', fontsize=fonts)
  59. ax[1].set_title("figure 6", fontsize=fonts)
  60. ax[1].grid(True)
  61. fig.tight_layout(pad=0.3)
  62. fig.savefig("./4.tiff")
  63. # 4.显示画布
  64. plt.show()

3. 图片展示

 

 

 

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

闽ICP备14008679号