Python 为什么matplotlib子批次以1开头
使用matplotlib创建子绘图时,需要从Python 为什么matplotlib子批次以1开头,python,matplotlib,Python,Matplotlib,使用matplotlib创建子绘图时,需要从1开始,而大多数其他python代码都是从零开始的。因此,要创建第一个子地块(左上角) 我本以为0是第一个子批次 ax = fig.add_subplot(3,4,0) 我看到过这样的解释:“我们从matlab得到了这个”,但这似乎是一个特别不令人满意的答案。答案实际上是:“这是为了matlab兼容性”。在快捷整数表示法方面有一个小优势(子批(231)而不是子批(2,3,1))。如果不使用字符串,则无法以这种方式表示基于0的系统。然而,这种快捷方式通
1
开始,而大多数其他python代码都是从零开始的。因此,要创建第一个子地块(左上角)
我本以为0
是第一个子批次
ax = fig.add_subplot(3,4,0)
我看到过这样的解释:“我们从matlab得到了这个”,但这似乎是一个特别不令人满意的答案。答案实际上是:“这是为了matlab兼容性”。在快捷整数表示法方面有一个小优势(子批(231)
而不是子批(2,3,1)
)。如果不使用字符串,则无法以这种方式表示基于0的系统。然而,这种快捷方式通常是一个坏主意,应该只在可读性不受关注的交互式场景中使用
正如@Cong-Ma所提到的,在大多数情况下,您会使用子图
对2D数组进行索引,而不是使用matlab风格的数值系统。这是一个更好的方法
例如:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3)
axes[0, 0].plot(range(10))
plt.show()
它并不完全相同,因为它还添加了所有子批次,但您始终可以隐藏不希望可见的子批次(
ax.axis('off')
或ax.set(visible=False)
)。但“我们从matlab获得了这个”是答案!我发现自己使用得更频繁了。它返回一个由Axis
对象组成的数组,您可以用通常的Python方式对数组进行索引
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3)
axes[0, 0].plot(range(10))
plt.show()