Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一IPython笔记本单元中制作多个图表_Python_Pandas_Ipython_Ipython Notebook - Fatal编程技术网

在同一IPython笔记本单元中制作多个图表

在同一IPython笔记本单元中制作多个图表,python,pandas,ipython,ipython-notebook,Python,Pandas,Ipython,Ipython Notebook,我已经开始我的IPython笔记本了 ipython notebook --pylab inline 这是我在一个牢房里的密码 df['korisnika'].plot() df['osiguranika'].plot() 这很好,它将画两条线,但在同一个图表上 我想在单独的图表上画每条线。 如果这些图表能挨着一个,而不是一个接一个,那就太好了 我知道我可以把第二行放到下一个单元格,然后我会得到两张图表。但我希望图表彼此靠近,因为它们代表相同的逻辑单元。首先创建多个轴,并将它们传递给Pand

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

ipython notebook --pylab inline
这是我在一个牢房里的密码

df['korisnika'].plot()
df['osiguranika'].plot()
这很好,它将画两条线,但在同一个图表上

我想在单独的图表上画每条线。 如果这些图表能挨着一个,而不是一个接一个,那就太好了


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

首先创建多个轴,并将它们传递给Pandas plot函数,如:

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

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])
它仍然提供1个图形,但两个不同的绘图相邻。

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


另一种方式是多样性。虽然这比其他的有些不灵活。不幸的是,这些图表一个接一个地出现,而不是并排出现,这是您在原始问题中要求的。但它非常简洁

df.plot(subplots=True)

如果数据帧不止两个系列,而您只想绘制这两个系列,则需要将
df
替换为
df[['korisnika','osiguranika']]

我不知道这是否是新功能,但这将绘制在单独的图形上:

df.plot(y='korisnika')
df.plot(y='osiguranika')
而这将绘制在同一个图上:(就像op中的代码一样)

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

类似这样的问题:

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

这是有效的。现在我习惯于改变图像的大小。我可以用fig来实现,axs=plt.subplot(1,2,figsize=(15,5))。有什么方法可以设置图像的像素大小吗?使用figsize确实是一种方法,即以英寸为单位的大小。需要多少像素取决于dpi,dpi固定在屏幕上显示。但是为了保存它,可以通过添加dpi关键字来设置。dpi是否固定用于屏幕显示并不十分准确(是的,不是的)。IPython仅根据图像的像素大小显示图像,该像素大小在matplotlib中通过将图形大小(以英寸为单位)乘以
savefig.dpi
config来确定。内联图形使用与写入文件相同的savefig路径。感谢您指出这一点,我不知道它是这样工作的。如果同时考虑到显示dpi,会不会更方便,因为在图形创建时很容易设置。对于savefig.dpi,除了
mpl.rcParams['savefig.dpi']=120
之外,我不知道其他方法。对于显示dpi,在很多地方都有一个关键字,如
plt.figure(dpi=120)
,但现在被忽略了,因此我错误地认为它是固定的。很好,但是如何设置绘图图片位置,如(2,2)或(1,2)?使用此选项,绘图必然会一个接一个地显示。为了更好地控制总体布局,
pyplot.subplot()
是一个不错的选择。我删除了链接。
import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()
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()