matplotlib 图例性能问题

6 python matplotlib legend jupyter-notebook

我正在使用 Jupyter-notebook 和 python 3.6.2 和 matplotlib 来绘制一些数据。

当我绘制数据时,我想在图中添加图例(基本上是为了知道哪条线是哪条线)

然而打电话plt.legend需要很多时间(几乎和情节本身一样多,据我理解,这应该是即时的)。

重现该问题的最小玩具问题:

import numpy as np
import matplotlib.pyplot as plt

# Toy useless data (one milion x 4)
my_data = np.random.rand(1000000,4)

plt.plot(my_data)
#plt.legend(['A','C','G','T'])
plt.show()
Run Code Online (Sandbox Code Playgroud)

这里的数据只是随机且无用的,但它重现了我的问题:如果我取消注释plt.legend行,则运行时间几乎增加一倍

为什么?图例不应该只看图,看到已经绘制了 4 个图,然后绘制一个框,将每种颜色分配给相应的字符串吗?

为什么一个简单的图例要花这么多时间?

我错过了什么吗?

Imp*_*est 2

复制@bnaecker的答案,这样这个问题就得到了回答:

默认情况下,图例将放置在“最佳”位置,这需要计算每条线中有多少个点位于潜在的图例框中。如果有很多点,这可能需要一段时间。当指定“最佳”以外的位置时,绘图速度要快得多,例如plt.legend(loc=3)