Matplotlib Subplots

绘制多个图表

您可以使用 subplots() 函数在一个图形中进行多个绘图:

实例

绘制两个图表:

  1. import sys
  2. import matplotlib
  3. matplotlib.use('Agg')
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. #plot 1:
  7. x = np.array([0, 1, 2, 3])
  8. y = np.array([3, 8, 1, 10])
  9. plt.subplot(1, 2, 1)
  10. plt.plot(x,y)
  11. #plot 2:
  12. x = np.array([0, 1, 2, 3])
  13. y = np.array([10, 20, 30, 40])
  14. plt.subplot(1, 2, 2)
  15. plt.plot(x,y)
  16. plt.show()
  17. plt.savefig(sys.stdout.buffer)
  18. sys.stdout.flush()
结果:


subplots() 函数

subplots() 函数采用三个参数来指定图形的布局。

按行和列来进行布局,由 第一第二 个参数表示。

第三个参数表示当前绘图的索引。

因此,如果我们想要一个 2 行 1 列的图形(这意味着两个图将显示在彼此的顶部而不是并排),我们可以编写如下语法:

实例

在每个图的顶部绘制两个图:

  1. import sys
  2. import matplotlib
  3. matplotlib.use('Agg')
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. #plot 1:
  7. x = np.array([0, 1, 2, 3])
  8. y = np.array([3, 8, 1, 10])
  9. plt.subplot(2, 1, 1)
  10. plt.plot(x,y)
  11. #plot 2:
  12. x = np.array([0, 1, 2, 3])
  13. y = np.array([10, 20, 30, 40])
  14. plt.subplot(2, 1, 2)
  15. plt.plot(x,y)
  16. plt.show()
  17. #Two lines to make our compiler able to draw:
  18. plt.savefig(sys.stdout.buffer)
  19. sys.stdout.flush()
结果:

您可以在一个图形上绘制任意多个绘图,只需指定绘图的 row(行数)、column(列数)和 index(索引)即可。
实例

绘制6个图形:

  1. import sys
  2. import matplotlib
  3. matplotlib.use('Agg')
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. x = np.array([0, 1, 2, 3])
  7. y = np.array([3, 8, 1, 10])
  8. plt.subplot(2, 3, 1)
  9. plt.plot(x,y)
  10. x = np.array([0, 1, 2, 3])
  11. y = np.array([10, 20, 30, 40])
  12. plt.subplot(2, 3, 2)
  13. plt.plot(x,y)
  14. x = np.array([0, 1, 2, 3])
  15. y = np.array([3, 8, 1, 10])
  16. plt.subplot(2, 3, 3)
  17. plt.plot(x,y)
  18. x = np.array([0, 1, 2, 3])
  19. y = np.array([10, 20, 30, 40])
  20. plt.subplot(2, 3, 4)
  21. plt.plot(x,y)
  22. x = np.array([0, 1, 2, 3])
  23. y = np.array([3, 8, 1, 10])
  24. plt.subplot(2, 3, 5)
  25. plt.plot(x,y)
  26. x = np.array([0, 1, 2, 3])
  27. y = np.array([10, 20, 30, 40])
  28. plt.subplot(2, 3, 6)
  29. plt.plot(x,y)
  30. plt.show()
  31. plt.savefig(sys.stdout.buffer)
  32. sys.stdout.flush()
结果:


标题

可以使用 title() 函数为每个绘图添加标题 :

实例

2 个带标题的绘图:

  1. import sys
  2. import matplotlib
  3. matplotlib.use('Agg')
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. #plot 1:
  7. x = np.array([0, 1, 2, 3])
  8. y = np.array([3, 8, 1, 10])
  9. plt.subplot(1, 2, 1)
  10. plt.plot(x,y)
  11. plt.title("SALES")
  12. #plot 2:
  13. x = np.array([0, 1, 2, 3])
  14. y = np.array([10, 20, 30, 40])
  15. plt.subplot(1, 2, 2)
  16. plt.plot(x,y)
  17. plt.title("INCOME")
  18. plt.show()
  19. plt.savefig(sys.stdout.buffer)
  20. sys.stdout.flush()
结果:


超级标题

您可以使用 suptitle() 函数来为整个图形添加一个标题:

实例

为整个图形添加一个标题:

  1. import sys
  2. import matplotlib
  3. matplotlib.use('Agg')
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. #plot 1:
  7. x = np.array([0, 1, 2, 3])
  8. y = np.array([3, 8, 1, 10])
  9. plt.subplot(1, 2, 1)
  10. plt.plot(x,y)
  11. plt.title("SALES")
  12. #plot 2:
  13. x = np.array([0, 1, 2, 3])
  14. y = np.array([10, 20, 30, 40])
  15. plt.subplot(1, 2, 2)
  16. plt.plot(x,y)
  17. plt.title("INCOME")
  18. plt.suptitle("MY SHOP")
  19. plt.show()
  20. plt.savefig(sys.stdout.buffer)
  21. sys.stdout.flush()
结果: