如何防止 perfplot (matplotlib) 图形标签被截断?

How to prevent perfplot (matplotlib) graph labels from being truncated?

我正在使用 perfplot 库(您可以 pip 安装),它可以对函数进行基准测试并绘制它们的性能。

观察绘制的图形时,标签被截断了。我该如何预防?

这是一个简单的 MCVE:

import perfplot 
from itertools import chain

perfplot.__version__
# '0.8.8'

perfplot.show(
    setup=lambda n: [[1] * 100] * n,
    kernels=[
        lambda L: sum(L, []),
        lambda L: list(chain.from_iterable(L))
    ],
    labels=['list_concat_sum', 'list_concat_chain'],
    n_range=range(1, 500, 100),
    xlabel='# lists',
    logy=True,
    logx=True)

这会产生:

您会注意到图表标签被截断了。有没有办法防止这种情况发生,或者更改图形以输出图例?

perfplot 好像用matplotlib来显示。根据 github 站点,您可以将计算和绘图分开,让您可以为该图注入自动格式(基本上 plt.tight_layout())和 rcParams

您可以在脚本前添加以下内容:

from matplotlib import pyplot as plt
plt.rcParams["figure.autolayout"] = True

示例输出:

不过,在使用这种方法时,可能会与其他图形进行交互。