如何在一个数字中制作超过10个子图?
发布时间:2020-12-20 12:10:45 所属栏目:Python 来源:网络整理
导读:我正在尝试制作5×4网格的子图,从查看示例看来,最好的方法是: import matplotlib.pyplot as pltplt.figure()plt.subplot(221) 子图(22)中的前两个数字表示它是2×2网格,第三个数字表示您正在制作的4个中的哪一个.但是,当我尝试这个时,我不得不去: plt.subp
我正在尝试制作5×4网格的子图,从查看示例看来,最好的方法是:
import matplotlib.pyplot as plt plt.figure() plt.subplot(221) 子图(22)中的前两个数字表示它是2×2网格,第三个数字表示您正在制作的4个中的哪一个.但是,当我尝试这个时,我不得不去: plt.subplot(5420) 我收到了错误: ValueError: Integer subplot specification must be a three digit number. Not 4 那么这是否意味着你不能制作更多的10个子图,或者是否有办法绕过它,或者我误解它是如何工作的? 先感谢您. 解决方法
您可能正在寻找
GridSpec.您可以说明网格的大小(5,4)和每个图的位置(行= 0,列= 2,即-0,2).请检查以下示例:
import matplotlib.pyplot as plt plt.figure(0) ax1 = plt.subplot2grid((5,4),(0,0)) ax2 = plt.subplot2grid((5,(1,1)) ax3 = plt.subplot2grid((5,(2,2)) ax4 = plt.subplot2grid((5,(3,3)) ax5 = plt.subplot2grid((5,(4,0)) plt.show() ,结果如下: 你应该构建嵌套循环来制作完整的网格: import matplotlib.pyplot as plt plt.figure(0) for i in range(5): for j in range(4): plt.subplot2grid((5,(i,j)) plt.show() ,你会得到这个: 这些图的工作方式与任何子图中的相同(直接从您创建的轴中调用它): import matplotlib.pyplot as plt import numpy as np plt.figure(0) plots = [] for i in range(5): for j in range(4): ax = plt.subplot2grid((5,j)) ax.scatter(range(20),range(20)+np.random.randint(-5,5,20)) plt.show() ,结果如下: 请注意,您可以为绘图提供不同的大小(说明每个绘图的列数和行数): import matplotlib.pyplot as plt plt.figure(0) ax1 = plt.subplot2grid((3,3),0),colspan=3) ax2 = plt.subplot2grid((3,colspan=2) ax3 = plt.subplot2grid((3,2),rowspan=2) ax4 = plt.subplot2grid((3,0)) ax5 = plt.subplot2grid((3,1)) plt.show() 因此: 在我在开头给出的链接中,您还将找到删除标签以及其他内容的示例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |