在同一IPython笔记本单元中制作多个图表
我已经开始我的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 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()