iPython/Jupyter 笔记本和 Pandas,如何在 for 循环中绘制多个图形?
iPython/Jupyter Notebook and Pandas, how to plot multiple graphs in a for loop?
考虑 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
循环?
只需在绘制图表后添加对 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()
在 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))
生成以下图表
考虑 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
循环?
只需在绘制图表后添加对 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()
在 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))
生成以下图表