Bug report
Plotting large amounts of data with legend is slow when legend is using best location.
Code for reproduction
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# Setup, and create the data to plot
y = np.random.rand(10000000)
# Adapted from https://matplotlib.org/tutorials/introductory/usage.html#performance
mpl.rcParams['path.simplify'] = True
mpl.rcParams['path.simplify_threshold'] = 1.0
plt.plot(y, label='data')
plt.legend(loc='best')
plt.show()
plt.plot(y, label='data')
plt.legend(loc='upper right')
plt.show()
Actual outcome
The first plot is much slower (loc='best') than the second.
Matplotlib version
- Operating system: Ubuntu 18.04
- Matplotlib version: 2.1.x and 2.2.x
- Matplotlib backend (
print(matplotlib.get_backend())): Qt5Agg, TkAgg
- Python version: 3.7
- Jupyter version (if applicable): N/A
- Other libraries: numpy 1.15.1
Installed via conda.
I think it'd be fine to just note this in the performance section of the User Guide (https://matplotlib.org/tutorials/introductory/usage.html#performance). I could also try looking into speeding up the best location finder but I get the feeling that'd be a fairly slow project.
Curious to hear what others think.
Bug report
Plotting large amounts of data with legend is slow when legend is using
bestlocation.Code for reproduction
Actual outcome
The first plot is much slower (
loc='best') than the second.Matplotlib version
print(matplotlib.get_backend())): Qt5Agg, TkAggInstalled via conda.
I think it'd be fine to just note this in the performance section of the User Guide (https://matplotlib.org/tutorials/introductory/usage.html#performance). I could also try looking into speeding up the
bestlocation finder but I get the feeling that'd be a fairly slow project.Curious to hear what others think.