【问题标题】:matplotlib legend performance issuematplotlib 图例性能问题
【发布时间】:2017-12-04 23:55:41
【问题描述】:

我正在使用带有 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个图,然后画一个框,将每种颜色分配给对应的字符串吗?

为什么一个简单的传说要花这么多时间?

我错过了什么吗?

【问题讨论】:

  • 默认情况下,图例将放置在“最佳”位置,这需要计算每行中有多少点位于潜在的图例框内。如果有很多点,这可能需要一段时间。指定“最佳”以外的位置时,绘图速度要快得多。

标签: python matplotlib jupyter-notebook legend


【解决方案1】:

复制@bnaecker 的答案,从而回答这个问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2021-11-01
    • 2023-04-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多