Sud*_*nha 4 python matplotlib subplot
我正在按照本教程水平制作两个子图。根据示例,以下内容应该有效。
import matplotlib.pylab as plt
import numpy
# Sample data
x = numpy.linspace(0, 2 * numpy.pi, 400)
y1 = numpy.sin(x ** 2)
y2 = numpy.cos(x ** 2)
figure, axes = plt.subplots(1, 2)
axes[0, 0].plot(x, y)
axes[0, 1].plot(x, y)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到以下错误消息。
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-4-124cb6e8d977> in <module>
8
9 figure, axes = plt.subplots(1, 2)
---> 10 axes[0, 0].plot(x, y)
11 axes[0, 1].plot(x, y)
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
Run Code Online (Sandbox Code Playgroud)
此外,如果我运行axes.shape,我得到的输出为(2,)。我希望它是(1, 2)。我缺少什么?
[请注意,前面的示例是一个最小的工作示例,它在我的代码中作为特殊情况出现。我不想通过(ax1, ax2)前面的示例中的路线,因为我不确切地知道我提前想要多少个子图,所以我必须以编程方式执行此操作。
特别是,我有 $ n $ 个特征,并且我想要形状 $ (ceil(n / 2), 2) $ 的子图。所以我会使用axes[i // 2, i % 2]where iis 我的迭代变量。但是当 $ n = 2 $ 时,我的代码崩溃了。]
提前致谢!
[编辑:添加了上下文来回答蒂姆的评论。]
dm2*_*dm2 10
根据matplotlib文档:plt.subplots
这是默认行为,可以通过将squeeze参数设置为False(plt.subplots(1, 2, squeeze = False)在您的情况下)来更改它,在这种情况下它将始终返回一个二维数组:
返回的 Axes 对象始终是包含 Axes 实例的 2D 数组,即使它最终是 1x1。
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |