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

Web*_*ode 73 python ipython pandas ipython-notebook

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

ipython notebook --pylab inline
Run Code Online (Sandbox Code Playgroud)

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

df['korisnika'].plot()
df['osiguranika'].plot()
Run Code Online (Sandbox Code Playgroud)

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

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

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

Too*_*ppe 86

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

   plt.plot(a)
   plt.show()
   plt.plot(b)
   plt.show()
Run Code Online (Sandbox Code Playgroud)

请参阅示例 - http://nbviewer.ipython.org/6151560

  • 使用此选项,图表必须一个接一个地出现.为了更好地控制整体布局,`pyplot.subplots()`是可行的方法. (2认同)

Rut*_*ies 77

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

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

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])
Run Code Online (Sandbox Code Playgroud)

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

  • 这很有效.现在我不会改变图像的大小.我可以用fig,axs = plt.subplots(1,2,figsize =(15,5))来做.有没有办法以像素为单位设置图像大小? (3认同)
  • dpi固定用于屏幕显示并不是很准确(好吧它是*而*它不是).IPython完全基于像素大小显示图像,像素大小在matplotlib中通过将数字大小乘以`savefig.dpi`配置确定.内联图形使用与写入文件相同的savefig路径. (2认同)

Luc*_*ano 8

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

df.plot(subplots=True)
Run Code Online (Sandbox Code Playgroud)

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


mgo*_*ser 7

像这样的东西:

import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用该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()
Run Code Online (Sandbox Code Playgroud)