Сделайте несколько диаграмм в одной ячейке Notebook IPython

Я начал свой IPython Notebook с помощью

ipython notebook --pylab inline

Это мой код в одной ячейке

df['korisnika'].plot()
df['osiguranika'].plot()

Это нормально работает, он будет рисовать две строки, но на одной диаграмме.

Я хотел бы выделить каждую строку на отдельной диаграмме. И было бы замечательно, если бы диаграммы были рядом друг с другом, а не друг с другом.

Я знаю, что я могу поместить вторую строку в следующую ячейку, а затем я получу две диаграммы. Но я хотел бы, чтобы диаграммы были близки друг к другу, потому что они представляют собой одну и ту же логическую единицу.

Ответ 1

Сначала сделайте несколько осей и передайте их в функцию графика Pandas, например:

fig, axs = plt.subplots(1,2)

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])

Он по-прежнему дает вам 1 рисунок, но с двумя разными графиками рядом друг с другом.

Ответ 2

Вы также можете вызвать функцию show() после каждого графика. например

   plot(a)
   show()
   plot(b)
   show()

см. пример при - http://nbviewer.ipython.org/6151560

Ответ 3

Другой способ, для разнообразия. Хотя это несколько менее гибко, чем другие. К сожалению, графики появляются один над другим, а не бок о бок, который вы запросили в исходном вопросе. Но это очень красноречиво.

df.plot(subplots=True)

Если в кадре данных больше, чем две серии, и вы хотите только построить эти два, вам нужно заменить df на df[['korisnika','osiguranika']].

Ответ 4

Я не знаю, является ли это новой функциональностью, но это будет отображаться на отдельных цифрах:

df.plot(y='korisnika')
df.plot(y='osiguranika')

в то время как это будет отображаться на том же рисунке: (как и код в op)

df.plot(y=['korisnika','osiguranika'])

Я нашел этот вопрос, потому что использовал прежний метод и хотел, чтобы они отображались на одной фигуре, поэтому ваш вопрос был на самом деле моим ответом.

Ответ 5

Что-то вроде этого:

import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()

Обратите внимание, что это также будет работать, если вы используете пакет seaborn для построения:

import matplotlib.pyplot as plt
import seaborn as sns
sns.barplot(... code for plot 1 ...) # plot 1
plt.show()
sns.barplot(... code for plot 2 ...) # plot 2
plt.show()