如何在JupyterLab中缩放内联matplotlib图形?

2024-05-02 06:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我用了一段时间的Jupyter笔记本,正在试用JupyterLab。我在开始时使用标准的%matplotlib内联魔术。我注意到JupyterLab显示的matplotlib图形比Jupyter笔记本过去大得多。在

是否有办法强制JupyterLab在较小的窗口/区域显示图像?我知道我可以在创建图形时更改我传递的figsize,但这不会缩放图形中的文本/标签,最终我得到的标签和标题实际上过大。在

理想情况下,在JupyterLab中,我希望能够设置它,使图像适合一个区域,我可以定义大小,如果他们更大,他们将缩放以适应。在

我一直在阅读JupyterLab的文档,但是在解决这个特殊的问题上,我什么都没想到。在

更新:我用Chrome运行JupyterLab。Chrome会显示浏览器窗口最大宽度的图像;如果窗口小于允许图像全尺寸的宽度,则图像将缩放以适应-这是完全动态的,如果缩小窗口的宽度,图像将动态地重新缩放。我改变了figsize参数(并仔细调整了字体大小以工作),在JuptyerLab中得到了一个大小合理的数字。我注意到,当我把这个保存到jpg并放到powerpoint文档中时,它非常小(3,2)。所以我把它放大了,但它变得模糊了。所以我用dip=1200重新生成它。JuputerLab的人变大了。所以JupyterLab不尊重figsize。它根据图像中像素的数量做出某种判断。在

更新2:这段代码表明Juptyer实验室前端不根据figsize参数显示图像,而是根据figsize和dpi的乘积显示图像(直到屏幕的宽度,之后会根据Chrome本身进行缩放)。请注意,您在屏幕上看到的字体大小仅使用dpi缩放,而不是使用figsize(应该如此)。在

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

xys = np.random.multivariate_normal([0.0, 0.0], [[1.0,-0.5],[-0.5,1.0]], 50)

for figsize in [(3,2),(6,4)]:
    for dpi in [25,50,100]:
        fig = plt.figure(figsize=figsize, dpi=dpi)
        ax = fig.add_subplot(1,1,1)
        ax.scatter(xys[:,0], xys[:,1])
        ax.set_title('figsize = {}, dip = {}'.format(figsize, dpi))

一个解决办法是在Jupyter实验室工作,在低dpi设置下生成数字,但在高dpi设置下为出版物保存数字。在


Tags: 图像图形区域宽度matplotlib笔记本jupyter数字