matplotlib传奇性能问题

时间:2017-12-04 23:55:42

标签: python matplotlib jupyter-notebook legend

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

当我绘制数据时,我想在图中添加一个图例(基本上知道哪一行是哪个)

然而,调用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()

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

为什么呢?难道传说只是看一下情节,看看已经制作了4个图,并画了一个框,将每种颜色分配给相应的字符串?

为什么一个简单的传奇花了这么多时间?

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

复制@bnaecker的答案,以便回答这个问题:

默认情况下,图例将放置在" best"位置,需要计算每行中有多少点位于潜在的图例框内。如果有很多分,这可能需要一段时间。指定" best"以外的位置时绘图要快得多,例如plt.legend(loc=3)