IPython/Jupyter Notebook и Pandas, как построить несколько графиков в цикле for?
Рассмотрим следующий код, запущенный в 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 *
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))
генерирует следующие диаграммы
![enter image description here]()