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

问题描述 投票:66回答:5

我已经开始使用我的IPython笔记本了

ipython notebook --pylab inline

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

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

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

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

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

python pandas ipython ipython-notebook
5个回答
74
投票

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

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

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

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


78
投票

您还可以在每个绘图后调用show()函数。例如

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

7
投票

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

df.plot(subplots=True)

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


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

1
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.