可以栅格化sns.distplot(,rug = true)吗?

时间:2017-02-05 18:42:25

标签: pdf matplotlib seaborn

在Matplotlib中,可以使用A绘制一个非常长的数组rasterize=True,如下所示:

plt.plot(A, rasterise=True)

这通常会降低内存使用量。

在Seaborn sns.distplot(见http://seaborn.pydata.org/generated/seaborn.distplot.html)的支撑轴上绘制 rugplot 时,可以这样做吗?实际上,这样的rugplot也可以包含许多点并且消耗大量内存。

编辑: 正如下面的答案中所注意到的,这并没有降低内存RAM消耗,但我们将文件格式保存为pdf格式,可以改变(即减少甚至增加,在某些情况下)磁盘上文件的大小。

1 个答案:

答案 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)或处理它(例如在乳胶中)时获得回报,其中光栅化部分消耗更少的内存并允许在屏幕上更快地呈现或打印。