在Matplotlib中,可以使用A
绘制一个非常长的数组rasterize=True
,如下所示:
plt.plot(A, rasterise=True)
这通常会降低内存使用量。
在Seaborn sns.distplot
(见http://seaborn.pydata.org/generated/seaborn.distplot.html)的支撑轴上绘制 rugplot 时,可以这样做吗?实际上,这样的rugplot也可以包含许多点并且消耗大量内存。
编辑: 正如下面的答案中所注意到的,这并没有降低内存RAM消耗,但我们将文件格式保存为pdf格式,可以改变(即减少甚至增加,在某些情况下)磁盘上文件的大小。
答案 0 :(得分:2)
Seaborn distplot与许多其他seaborn图一样,允许将关键字参数传递给基础matplotlib函数。
在这种情况下,distplot
有一个关键字参数rug_kws
,它接受要传递给rugplot
的关键字参数字典。这些又被转移到底层的matplotlib axvline
函数。
因此,您可以通过
轻松地向rasterized=True
提供axvline
ax = sns.distplot(x, rug=True, hist=False, rug_kws=dict(rasterized=True))
但是,我不确定这是否具有降低内存消耗的预期效果。一般情况下,保存图形时会应用光栅化,因此屏幕上显示的图表根本不会受到影响 在保存过程中,必须应用光栅化,这比没有光栅化需要更多的时间和内存。
虽然像png这样的位图文件完全被光栅化并且根本不会受到影响,但生成的矢量文件(如pdf,eps或svg)甚至可能具有比未编译的对应文件更大的文件大小。 然后光栅化只会在实际打开这样的文件(例如观察者中的pdf)或处理它(例如在乳胶中)时获得回报,其中光栅化部分消耗更少的内存并允许在屏幕上更快地呈现或打印。