有什么方法可以让matplotlib的Nbagg后端更快,或者内联后端的分辨率更高?

时间:2017-05-19 18:04:51

标签: python matplotlib jupyter-notebook backend ipython-notebook

我喜欢使用Jupyter笔记本,但似乎无法找到正确的后端来显示图形:Table A TABLE B (has fk of A) TBALE C (HAS FK OF B) aid aname bid bname afk cid cname bfk 1 a 1 b 1 1 c 1 2 a2 2 b2 2 2 c2 1 select a.aname , b.bname , c.cname from A a left join B b on a.aid = b.afk left join C c on c.bfk = b.bid; 生成真正低分辨率的位图图像,但速度快,{{{ 1}}或%matplotlib inline ,但是高分辨率矢量图形。

后者是否会因为必须设置交互界面而变慢?我一般希望所有的数据都可以通过点击按钮重现,所以我不想手动操作它们 - 也许我可以禁用每个情节的互​​动

或者可以调整前者以显示更高分辨率的数字,还是加载矢量图形而不是位图图像?

1 个答案:

答案 0 :(得分:0)

正如经常发生的那样,我在发布问题后立即找到答案。只需使用

%config InlineBackend.figure_format='retina'
%matplotlib inline

用于高分辨率位图,用于矢量图形,

%config InlineBackend.figure_format='svg'
%matplotlib inline

这就是诀窍! 虽然这样做的一个问题是Figure边界框被扩展为显示每个Artist对象;我认为在显示数字之前会在内部使用类似fig.tight_layout()的内容。我实际上更喜欢切断边缘,以便我可以看到需要调整哪些参数(例如,如果ylabel被切除,我可以在left=中更改gridspec_kw {1}}字典传递给plt.subplots)。因此,如果有人有办法显示上面的数字,但只显示Figure边界框内的内容,我会很感激。

还想出了即使Artist走出去,如何使后端保留打印图形边界框 - 只需使用

%config InlineBackend.print_figure_kwargs=dict()

因为默认情况下,它的值为{'bbox_inches': 'tight'} ...非常简单!找不到任何相关文档,但如果您输入Jupyter,则%config InlineBackend会显示不同的选项。