iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?

Posted

技术标签:

【中文标题】iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?【英文标题】:iPython/Jupyter Notebook and Pandas, how to plot multiple graphs in a for loop? 【发布时间】:2015-06-14 11:42:47 【问题描述】:

考虑以下代码在 iPython/Jupyter Notebook 中运行:

from pandas import *
%matplotlib inline

ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]

for y_ax in ys:
    ts = Series(y_ax,index=x_ax)
    ts.plot(kind='bar', figsize=(15,5))

我希望有 2 个单独的图作为输出,相反,我将两个系列合并到一个图中。 这是为什么?如何获得两个单独的图来保持for 循环?

【问题讨论】:

【参考方案1】:

只需在绘制图表后添加对plt.show() 的调用(您可能希望import matplotlib.pyplot 这样做),如下所示:

from pandas import Series
import matplotlib.pyplot as plt
%matplotlib inline

ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]

for y_ax in ys:
    ts = Series(y_ax,index=x_ax)
    ts.plot(kind='bar', figsize=(15,5))
    plt.show()

【讨论】:

【参考方案2】:

在 IPython 笔记本中,最好的方法通常是使用子图。您在同一个图形上创建多个轴,然后在笔记本中渲染该图形。例如:

import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline

ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]

fig, axs = plt.subplots(ncols=2, figsize=(10, 4))
for i, y_ax in enumerate(ys):
    pd.Series(y_ax, index=x_ax).plot(kind='bar', ax=axs[i])
    axs[i].set_title('Plot number '.format(i+1))

生成以下图表

【讨论】:

好的,但在这种情况下,它是一个带有两个子图的图形,我做了几乎相同的事情,但也使用了索引图形(循环内的 figs[i] 和 axs[i])和plt.show(),但我无法与数字交互。

以上是关于iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?的主要内容,如果未能解决你的问题,请参考以下文章

在 ipython/Jupyter notebook 中导入 scikit-learn

是否可以在 IPython /JuPyter Notebook 中显示 OpenCV 视频?

InstagramAPI - 如何将 JSON Python 数据解析为 Pandas DataFrame(iPython、Jupyter Notebook)

如何在 Windows 的 ipython jupyter notebook 中添加 Spark-csv-master?

在版本控制下使用 IPython / Jupyter Notebooks

python Jupyter Notebook插件