在同一个IPython Notebook单元格中创建多个图表

时间:2013-05-06 06:10:36

标签: python pandas ipython ipython-notebook

我已经用

启动了我的IPython笔记本
ipython notebook --pylab inline

这是我在一个单元格中的代码

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

这样工作正常,它会绘制两条线,但在同一图表上。

我想在单独的图表上绘制每一行。 如果图表彼此相邻,而不是一个接一个,那就太好了。

我知道我可以将第二行放在下一个单元格中,然后我会得到两个图表。但我希望这些图表彼此接近,因为它们代表了相同的逻辑单元。

5 个答案:

答案 0 :(得分:77)

您还可以在每个绘图后调用show()函数。 e.g

   plt.plot(a)
   plt.show()
   plt.plot(b)
   plt.show()

答案 1 :(得分:72)

首先制作多个轴并将它们传递给Pandas绘图功能,如:

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

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

它仍然给你1个数字,但是彼此相邻有两个不同的图。

答案 2 :(得分:7)

另一种方式,多样化。虽然这比其他人灵活性稍差。不幸的是,这些图表是一个在另一个之上,而不是并排显示,您在原始问题中请求了这些图表。但它非常简洁。

df.plot(subplots=True)

如果数据框有两个以上的系列,并且您只想绘制这两个系列,则需要将df替换为df[['korisnika','osiguranika']]

答案 3 :(得分:6)

这样的事情:

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()

答案 4 :(得分:1)

我不知道这是否是新功能,但这将在不同的数字上绘制:

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

虽然这将绘制在同一图上:(就像操作中的代码一样)

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

我发现了这个问题,因为我使用的是前一种方法,并希望它们在同一个图上绘图,所以你的问题实际上是我的答案。