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つの別々のプロットがあると予想されますが、代わりに2つのシリーズが1つの単一のプロットにマージされます。何故ですか? for
ループを保持する2つの別々のプロットを取得するにはどうすればよいですか?
グラフをプロットした後、 plt.show()
への呼び出しを追加するだけです(import matplotlib.pyplot
それを行うには)、このように:
from pandas import *
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ノートブックでは、これを行う最適な方法はサブプロットを使用することです。同じFigure上に複数の軸を作成してから、ノートブックでFigureをレンダリングします。例えば:
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))
以下のチャートを生成します