【发布时间】:2017-08-26 12:29:33
【问题描述】:
我目前正在学习使用 Jupyter Notebook 在 Python 中使用 matplotlib 制作绘图的基本理念。我的主要抱怨是在创建子图时,为什么我必须在一个块中运行代码?每当我尝试以单独的步骤运行它时,它都会给我带来奇怪的情节。例如:
plt.subplot(211)
plt.plot(range(10))
plt.subplot(212, facecolor='y')
plt.plot(randn(50))
我必须一步执行这四行代码,而不是四步运行它们。这里到底发生了什么?为什么这两种方法有这么大的区别?
【问题讨论】:
-
请注意,有一个微妙的替代方案称为
plt.subplots()(带有“s”)。这种方法与经典的 matlab 风格有点不同,它允许您在一行中声明图形和轴元组,例如fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)。可以随时为这些轴分配新数据。 -
@pylang 重点不在于是使用
plt.subplot还是使用plt.subplots创建子图。关键是使用状态机还是使用oo api,即是否保留对对象的引用。 -
也许我应该说得更清楚一些。我打算做的是启动一个子图并在其上绘制,然后启动另一个子图并在其上制作另一个图,依此类推。问题是我必须在一个单元格中执行这些步骤(而不是在一个单独的单元格中)才能获得预期的效果。为什么我不能一步一步地制作几个子图,以便能够检查每个中间结果的样子?
-
不,
add_subplots不会修改任何位置。它只是在网格上的给定位置添加一个子图。无论如何,我认为要点已经传达:只要您跟踪对象句柄,您就可以在任何您喜欢的单元格中做任何您喜欢的事情。
标签: python matplotlib plot jupyter-notebook figure