CoCalc Public FilesWorkshop-18-WP / Workshop18-Waves_Phenomena.ipynb
Author: Nathan Dixon
Compute Environment: Ubuntu 20.04 (Default)

# Fast Fourier Transforms using Python

Reminder: Use matplotlib and numpy Python modules for plotting and numerical calculations respectively. Start your program with the following statement:

In [30]:
import matplotlib.pyplot as plt import numpy as np

## Recap and introduction

A Fourier transform (FT) is used to calculate the frequency components present in a signal that varies in time or the spatial frequencies present in an image that varies in space. In the lectures the Fourier transform and the inverse Fourier transform have been defined as $\begin{array}{rl} F(\omega) &= \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{+\infty} f(t) e^{-i\omega t} {\rm d} t \,, \\ f(t) &= \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{+\infty} F(\omega) e^{i\omega t} {\rm d} \omega \,. \end{array}$ The inverse FT takes the FT and recovers the original function.

We saw in Fourier 9 that for a signal that has a finite number of points sampled at discrete, evenly spaced intervals, we instead have the Discrete Fourier Transform (DFT) and its inverse transform $\begin{array}{rl} F_k &= \sum_{n=0}^{N-1} f_n e^{-i 2\pi n k /N} \ \ \ \mathrm{ for } \ 0 \le k \le N-1 \,, \\ f_n &= \frac{1}{N} \sum_{k=0}^{N-1} F_k e^{ i 2\pi n k /N} \ \ \mathrm{for} \ 0 \le n \le N-1 \,. \end{array}$

If you have $N$ data points, $f_{n}$, separated by $\Delta t$, between $t=0$ and $(N-1)\Delta t$ (i.e. $t=n \Delta t$ with $n=0,...,N-1$) the discrete Fourier transform has $N$ data points, $F_{k}$, corresponding to frequencies $\omega= k \Delta \omega$ with $k=0,...,N-1$ and $\Delta \omega=2 \pi/(N \Delta t)$. The Nyquist frequency is defined as $\omega_{c}= \pi/\Delta t$, and has $k=k_{\rm c}= N/2$. It determines the maximum frequency that you can detect in your signal.

The indices of a numpy array must start at 0, so the first data point $f_0$ is represented by the variable f[1]. Similarly the zero frequency component of the DFT $F_0$ is the variable F[0]. Therefore the definitions of the DFT and inverse DFT in terms of numpy arrays become

$\begin{array}{rl} { \tt F[k]} &= { \tt \sum_{n=0}^{N-1} f(n)* np. exp(-1j*2*\pi*k*n/N)} \,, \\ { \tt f[n]} &= { \tt 1/N*\sum_{k=0}^{N-1} F[k]* np.exp(1j*2*\pi*k*n/N)} \,. \end{array}$

In Python's numpy array F[0:N] the element F[0] contains the zero-frequency term. Then F[1:N/2] contains the positive-frequency terms, and F[(N/2+1):] contains the negative-frequency terms, in order of decreasingly negative frequency. For an even number of input points N, F[N/2] represents both positive and negative Nyquist frequency. For an odd number of input points N, F[(N-1)/2] contains the largest positive frequency, while F[(N+1)/2] contains the largest negative frequency.

The DFT will almost always be complex. Therefore we usually need to plot the modulus or the modulus squared of the DFT (which is often referred to as the power spectrum).

Numerical techniques have been developed to calculate discrete Fourier transforms. The most commonly used algorithm is known as the Fast Fourier Transform or FFT. Here we will be using the FFT without studying its inner workings[^1]. Python's numpy.fft module has procedures for optimising the way it does the calculations depending on the size of the data sample. The original FFT algorithm was designed to work when the number of data points is equal to an integer power of 2. Conventional wisdom therefore states that, in order for the FFT to be calculated quickly, you should use a number of data points that is an integer power of 2. Very efficient FFT solvers have since been developed for powers of 3, 5 and 7. If the number of data points is a prime number, however, the calculation will be rather slow! If you are going to be doing a lot of FFTs (for instance in project work) you should search for the most efficient value of $N$ by direct timing (i.e. varying $N$ and seeing how long your code takes to run).

[^1]: If you're interested in how it works, see Appendix 5.A of the Fourier summary notes or the chapter on FFTs in the "Numerical methods in ..." series of textbooks by Press et al.

## The numpy's FFT

The FFT of a vector x can be calculated simply using the numpy's function fft.fft:

import numpy as np y = np.fft.fft(x) y = np.fft.fft(x,n) y = np.fft.fft(x,n, axis=1)

The vector y is the discrete Fourier transform of the vector x, computed using a fast Fourier transform algorithm. If x is a matrix then y is the FFT of each column of the matrix. If a second parameter, n, is specified then y is the n-point FFT, which means that n data points are used to calculate the transform. If len(x)<n then np.fft.fft pads x with trailing zeros to reach a length of n. If len(x)>n then the data is truncated to use only the first n points. If x is a multidimensional array, the paramater axis specifies the dimension along which the FFT is applied.

The inverse Fourier transform can be calculated using np.fft.ifft which syntax is identical to that of np.fft.fft.

y = np.fft.ifft(x) y = np.fft.ifft(x,n) y = np.fft.ifft(x,n, axis=1)

### Question 1

i) Generate $0.6 \, {\rm s}$ of a signal which is equal to the sum of two sinusoids with frequencies $50 \, {\rm Hz}$ and $120 \, {\rm Hz}$, sampled at a rate $1000 \, {\rm Hz}$. Plot the first fifty points of the signal using plt.step.

In [6]:
import numpy as np import matplotlib.pyplot as plt duration = 0.6 dt=0.001 timestamps=np.arange(0, duration, dt) freq1=50 freq2=120 sin1=np.sin(2*np.pi*freq1*timestamps) sin2=np.sin(2*np.pi*freq2*timestamps) sintot=sin1+sin2 plt.plot(timestamps, sintot)
[<matplotlib.lines.Line2D at 0x7fae65b82910>]

ii) Calculate the 512 point FFT of this signal and plot the real part of the FFT versus array index. Notice that (as discussed in "Recap and Introduction" ) the data is symmetric about the halfway point. All the useful frequency components are stored in the first 256 points. The last 256 points are a mirror image caused by the finite sampling frequency.

In [8]:
N=512 y=sintot Ft=np.fft.fft(y, N) RFt=np.real(Ft) plt.figure(2,figsize=(8,6)) ax2=plt.axes() vec=np.arange(0,512) plt.plot(vec,RFt) plt.title('real part of FFT against index')
Text(0.5, 1.0, 'real part of FFT against index')

iii) The power spectrum is a measurement of the energy at each frequency. If Y is the Fourier transform, then the power spectrum is defined as

Pyy = np.real(Y*np.conj(Y)/N)

where np.conj(Y) is the complex conjugate of Y and N is the number of frequencies (which is equal to the number of data samples). Note that for plotting result of array multiplication should be recast as an array of real numbers.

We're going to plot the first 256 points of the power spectrum as a function of frequency. The spacing of the angular frequencies making up the Fourier transform is $\Delta \omega = 2 \pi/(N \Delta t)$. The spacing of the frequencies, $f$, is therefore $\Delta f = 1/(N \Delta t )$. $\Delta t$, the spacing of the data points, is equal to the inverse of the sampling rate, which in this case is $1000 \, {\rm Hz}$. Therefore we want:

rate=1000 N=512 f = rate*np.arange(0,256,1)/N; plt.plot(f, Pyy[0:256]);

You should see that the power spectrum peaks at the input frequencies ($50 \, {\rm Hz}$ and $120 \, {\rm Hz}$).

Note that to increase frequency resolution (i.e. to see high frequency variations) you need lots of points in the FFT, since the sampling frequency determines the maximum frequency that can be detected in the FFT.

In [ ]:

### Question 2

i) Define and plot a vector that represents the light transmitted through a 1d slit (i.e. a top-hat aperture function). As mentioned above, it's a good idea to make $N$, the number of samples which your vector contains, an integer power of 2.

In [11]:
)''' n=1
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-11-a05db1cc95be> in <module> 9 np.append(tophat, slit) 10 np.append(tophat, w) ---> 11 plt.plot(length, tophat) /usr/local/lib/python3.8/dist-packages/matplotlib/pyplot.py in plot(scalex, scaley, data, *args, **kwargs) 2838 @_copy_docstring_and_deprecators(Axes.plot) 2839 def plot(*args, scalex=True, scaley=True, data=None, **kwargs): -> 2840 return gca().plot( 2841 *args, scalex=scalex, scaley=scaley, 2842 **({"data": data} if data is not None else {}), **kwargs) /usr/local/lib/python3.8/dist-packages/matplotlib/axes/_axes.py in plot(self, scalex, scaley, data, *args, **kwargs) 1741 """ 1742 kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D) -> 1743 lines = [*self._get_lines(*args, data=data, **kwargs)] 1744 for line in lines: 1745 self.add_line(line) /usr/local/lib/python3.8/dist-packages/matplotlib/axes/_base.py in __call__(self, data, *args, **kwargs) 271 this += args[0], 272 args = args[1:] --> 273 yield from self._plot_args(this, kwargs) 274 275 def get_next_color(self): /usr/local/lib/python3.8/dist-packages/matplotlib/axes/_base.py in _plot_args(self, tup, kwargs) 397 398 if x.shape[0] != y.shape[0]: --> 399 raise ValueError(f"x and y must have same first dimension, but " 400 f"have shapes {x.shape} and {y.shape}") 401 if x.ndim > 2 or y.ndim > 2: ValueError: x and y must have same first dimension, but have shapes (2000,) and (990,)

ii) The Fraunhofer diffraction pattern is proportional to the square of the Fourier transform of the aperture function.

Use np.fft.fft to find the Fraunhofer diffraction pattern of your 1d slit and plot the result. It should be the square of a $\text{sinc}(x)$ function centred at zero spatial frequency.

In this case we're taking the Fourier transform of a spatial function (rather than a function of time), therefore the Fourier transform is a function of wavenumber or spatial frequency, $k$ (rather than angular frequency, $\omega$). In this case if $L$ is the spatial length of the vector, then the FFT will have $N$ equally spaced spatial frequencies between $k=0$ and $k=2 \pi (N-1)/L$, where $N$ is the number of samples that your vector from part i) contains.

In [ ]:

iii) The command np.fft.fftshift reorganizes the FFT so that zero frequency is placed in the centre of the vector rather than the first element. Use np.fft.fftshift and make a plot with the sinc function centred properly.

You'll need to manually shift your vector of frequencies so that its centered at zero frequency too, i.e.:

kx = np.arange(0,n,1)*(2*np.pi)/L # spatial frequencies kxny = (n/2)*(2*np.pi)/L # Nyquist frequency kxs = kx - kxny # shifted frequencies

where L is the length of your original vector representing the light transmitted through a 1d slit.

In [ ]:

iv) Change the width of the top hat function and see how the width of the sinc function changes. You should find that a wider slit leads to a narrower sinc function.

In [ ]:

## Convolution

We saw in Fourier 8 that mathematically the convolution of two functions $f(x)$ and $g(x)$ is defined as $h(x^{\prime}) = \int_{-\infty}^{\infty} f(x) g(x^{\prime}-x) {\rm d} x \,.$ This can be used to model the situation where an intrinsic signal is 'blurred' by some aspect of the measurement process. If the intrinsic signal is a set of delta functions, but the measuring instrument has a response that is gaussian, the result will be the sum of gaussians centred at the positions of the delta functions. The intuitive interpretation of convolution is that if one function is slid across the other, then at each position the convolution is the area under the product of the functions.

With discrete data the convolution becomes a sum: $h(k) = \sum_j f(j) g(k-j),$ where the sum extends over all valid indices.

The diagram schematically shows the process of convolving three delta-functions (solid lines) with a gaussian (the dotted line). The left column shows the two functions and the right column their convolution. The top panels show the gaussian positioned at the leftmost offset, where just one point overlaps. As the gaussian is moved to the right more points overlap, so the sum extends over the points between the o and the x. When the gaussian passes over the delta-functions, the convolution is large. Elsewhere it is small. The last point is when the gaussian is at the furthest right, with just one point overlapping. You can see from this that the convolved array is bigger than the individual arrays. If the original arrays have N points, then the convolved array will have 2*N-1 points. In practice we are usually interested in the central N points of the convolved array.

The Python function to convolve two functions is np.convolve . This function requires a vector for $f$ and another for $g$, and returns a vector $h$ which has elements h[k].

### Question 3

i) Generate and plot $10 \, {\rm s}$ of a signal sampled at $100 \, {\rm Hz}$ so that the signal is zero everywhere, except for three points at time $t=2.5, 5.0$ and $7.5 \, {\rm s}$ which are set to $1$. This is the numerical equivalent to three delta-functions.

Also generate a gaussian with $\sigma = 0.1 \, {\rm s}$ for $t$ between $-5 \, {\rm s}$ and $+5 \, {\rm s}$ using the same time steps.

In [ ]:
t=10s dt=0.01 f=np.zeros((t*dt)) f[np.array([250,500,750])]=1 s=0.1 g=np.exp((-t1**2)/(2*s**2))

ii) Use the np.convolve function to calculate the convolution of the delta-function signal and the gaussian. The np.convolve function does the entire set of summations for all values of $k$ in one go, and returns an array containing the convolved function $h$. Plot the convolution.

In [ ]:
convf=np.covolve(f) plt.plot(f, convf)

## Convolution Theorem

The convolution theorem says that the Fourier transform of the convolution of $f$ and $g$ is the product of the Fourier transforms of $f$ and $g$. For discrete FTs $FT[h] = FT[f] FT[g]$ and so $h = IFT[ FT[f] FT[g]]$.

Calculating FTs and IFTs is quicker than calculating a convolution directly. Therefore we can use the convolution theorem (and np.fft.fft and np.fft.ifft to efficiently calculate a convolution.

### Question 4

i) Use np.fft.fft and np.fft.ifft to calculate the convolution of the delta-function signal and gaussian from Question 3, and compare with the result you found in Question 3 using np.convolve .

Remember that np.fft.fft returns an array with the zero frequency component of the FT as the first element. The np.convolve function returns an array with the zero frequency component in the middle. Therefore to compare your results you'll need to use the np.fft.fftshift command as in Question 2iii).

In [ ]:

## Two dimensional Fourier Transforms

In the previous sections you calculated some 1d Fourier transforms by generating 1d vectors of data and using the np.fft.fft command. In this section we will extend this to 2d data. The command to calculate a 2d FFT is np.fft.fft2 , and for the 2d inverse transform np.fft.fft2 .

work in exactly the same way as np.fft.fft and np.fft.ifft, but on a two-dimensional matrix rather than a vector.

There are also Fourier transform commands for data that is in three or more dimensional arrays. The commands are np.fft.fftn and np.fft.ifftn where n the number of dimensions.

### Question 5

i) Create a 2d matrix that represents the intensity of light passing through a square aperture, and calculate the resulting Fraunhofer diffraction pattern (c.f. Question 2).

ii) Plot the intensity of the diffraction pattern using plt.imshow. You can show low level detail as well as the main peak by plotting the logarithm of one plus the intensity.

In [15]:
n=1024 L=2 x=np.linspace(-L/2, L/2, n) y=np.linspace(-L/2, L/2, n) [xx, yy]=np.meshgrid(x,y) a=0.018 light=np.where((np.abs(xx)<a) & (np.abs(yy)<a),1,0) plt.plot(xx, yy, light)
[<matplotlib.lines.Line2D at 0x7fae552ccb80>, <matplotlib.lines.Line2D at 0x7fae552ccc70>, <matplotlib.lines.Line2D at 0x7fae552ccd30>, <matplotlib.lines.Line2D at 0x7fae552ccdf0>, <matplotlib.lines.Line2D at 0x7fae552cceb0>, <matplotlib.lines.Line2D at 0x7fae552ccf70>, <matplotlib.lines.Line2D at 0x7fae552d9070>, <matplotlib.lines.Line2D at 0x7fae552d9130>, <matplotlib.lines.Line2D at 0x7fae552d91f0>, <matplotlib.lines.Line2D at 0x7fae552d92b0>, <matplotlib.lines.Line2D at 0x7fae55371610>, <matplotlib.lines.Line2D at 0x7fae552d9400>, <matplotlib.lines.Line2D at 0x7fae552d94c0>, <matplotlib.lines.Line2D at 0x7fae552d9580>, <matplotlib.lines.Line2D at 0x7fae552d9640>, <matplotlib.lines.Line2D at 0x7fae552d9700>, <matplotlib.lines.Line2D at 0x7fae552d97c0>, <matplotlib.lines.Line2D at 0x7fae552d9880>, <matplotlib.lines.Line2D at 0x7fae552d9940>, <matplotlib.lines.Line2D at 0x7fae552d9a00>, <matplotlib.lines.Line2D at 0x7fae552d9ac0>, <matplotlib.lines.Line2D at 0x7fae552d9b80>, <matplotlib.lines.Line2D at 0x7fae552d9c40>, <matplotlib.lines.Line2D at 0x7fae552d9d00>, <matplotlib.lines.Line2D at 0x7fae552d9dc0>, <matplotlib.lines.Line2D at 0x7fae552d9e80>, <matplotlib.lines.Line2D at 0x7fae552d9f40>, <matplotlib.lines.Line2D at 0x7fae552e9040>, <matplotlib.lines.Line2D at 0x7fae552e9100>, <matplotlib.lines.Line2D at 0x7fae552e91c0>, <matplotlib.lines.Line2D at 0x7fae552e9280>, <matplotlib.lines.Line2D at 0x7fae552e9340>, <matplotlib.lines.Line2D at 0x7fae552e9400>, <matplotlib.lines.Line2D at 0x7fae552e94c0>, <matplotlib.lines.Line2D at 0x7fae552e9580>, <matplotlib.lines.Line2D at 0x7fae552e9640>, <matplotlib.lines.Line2D at 0x7fae552e9700>, <matplotlib.lines.Line2D at 0x7fae552e97c0>, <matplotlib.lines.Line2D at 0x7fae552e9880>, <matplotlib.lines.Line2D at 0x7fae552e9940>, <matplotlib.lines.Line2D at 0x7fae552e9a00>, <matplotlib.lines.Line2D at 0x7fae552e9ac0>, <matplotlib.lines.Line2D at 0x7fae552e9b80>, <matplotlib.lines.Line2D at 0x7fae552e9c40>, <matplotlib.lines.Line2D at 0x7fae552e9d00>, <matplotlib.lines.Line2D at 0x7fae552e9dc0>, <matplotlib.lines.Line2D at 0x7fae552e9e80>, <matplotlib.lines.Line2D at 0x7fae552e9f40>, <matplotlib.lines.Line2D at 0x7fae552ec040>, <matplotlib.lines.Line2D at 0x7fae552ec100>, <matplotlib.lines.Line2D at 0x7fae552ec1c0>, <matplotlib.lines.Line2D at 0x7fae552ec280>, <matplotlib.lines.Line2D at 0x7fae552ec340>, <matplotlib.lines.Line2D at 0x7fae552ec400>, <matplotlib.lines.Line2D at 0x7fae552ec4c0>, <matplotlib.lines.Line2D at 0x7fae552ec580>, <matplotlib.lines.Line2D at 0x7fae552ec640>, <matplotlib.lines.Line2D at 0x7fae552ec700>, <matplotlib.lines.Line2D at 0x7fae552ec7c0>, <matplotlib.lines.Line2D at 0x7fae552ec880>, <matplotlib.lines.Line2D at 0x7fae552ec940>, <matplotlib.lines.Line2D at 0x7fae552eca00>, <matplotlib.lines.Line2D at 0x7fae552ecac0>, <matplotlib.lines.Line2D at 0x7fae552ecb80>, <matplotlib.lines.Line2D at 0x7fae552ecc40>, <matplotlib.lines.Line2D at 0x7fae552ecd00>, <matplotlib.lines.Line2D at 0x7fae552ecdc0>, <matplotlib.lines.Line2D at 0x7fae552ece80>, <matplotlib.lines.Line2D at 0x7fae552ecf40>, <matplotlib.lines.Line2D at 0x7fae552f3040>, <matplotlib.lines.Line2D at 0x7fae552f3100>, <matplotlib.lines.Line2D at 0x7fae552f31c0>, <matplotlib.lines.Line2D at 0x7fae552f3280>, <matplotlib.lines.Line2D at 0x7fae552f3340>, <matplotlib.lines.Line2D at 0x7fae552f3400>, <matplotlib.lines.Line2D at 0x7fae552f34c0>, <matplotlib.lines.Line2D at 0x7fae552f3580>, <matplotlib.lines.Line2D at 0x7fae552f3640>, <matplotlib.lines.Line2D at 0x7fae552f3700>, <matplotlib.lines.Line2D at 0x7fae552f37c0>, <matplotlib.lines.Line2D at 0x7fae552f3880>, <matplotlib.lines.Line2D at 0x7fae552f3940>, <matplotlib.lines.Line2D at 0x7fae552f3a00>, <matplotlib.lines.Line2D at 0x7fae552f3ac0>, <matplotlib.lines.Line2D at 0x7fae552f3b80>, <matplotlib.lines.Line2D at 0x7fae552f3c40>, <matplotlib.lines.Line2D at 0x7fae552f3d00>, <matplotlib.lines.Line2D at 0x7fae552f3dc0>, <matplotlib.lines.Line2D at 0x7fae552f3e80>, <matplotlib.lines.Line2D at 0x7fae552f3f40>, <matplotlib.lines.Line2D at 0x7fae552fa040>, <matplotlib.lines.Line2D at 0x7fae552fa100>, <matplotlib.lines.Line2D at 0x7fae552fa1c0>, <matplotlib.lines.Line2D at 0x7fae552fa280>, <matplotlib.lines.Line2D at 0x7fae552fa340>, <matplotlib.lines.Line2D at 0x7fae552fa400>, <matplotlib.lines.Line2D at 0x7fae552fa4c0>, <matplotlib.lines.Line2D at 0x7fae552fa580>, <matplotlib.lines.Line2D at 0x7fae552fa640>, <matplotlib.lines.Line2D at 0x7fae552fa700>, <matplotlib.lines.Line2D at 0x7fae552fa7c0>, <matplotlib.lines.Line2D at 0x7fae552fa880>, <matplotlib.lines.Line2D at 0x7fae552fa940>, <matplotlib.lines.Line2D at 0x7fae552faa00>, <matplotlib.lines.Line2D at 0x7fae552faac0>, <matplotlib.lines.Line2D at 0x7fae552fab80>, <matplotlib.lines.Line2D at 0x7fae552fac40>, <matplotlib.lines.Line2D at 0x7fae552fad00>, <matplotlib.lines.Line2D at 0x7fae552fadc0>, <matplotlib.lines.Line2D at 0x7fae552fae80>, <matplotlib.lines.Line2D at 0x7fae552faf40>, <matplotlib.lines.Line2D at 0x7fae55300040>, <matplotlib.lines.Line2D at 0x7fae55300100>, <matplotlib.lines.Line2D at 0x7fae553001c0>, <matplotlib.lines.Line2D at 0x7fae55300280>, <matplotlib.lines.Line2D at 0x7fae55300340>, <matplotlib.lines.Line2D at 0x7fae55300400>, <matplotlib.lines.Line2D at 0x7fae553004c0>, <matplotlib.lines.Line2D at 0x7fae55300580>, <matplotlib.lines.Line2D at 0x7fae55300640>, <matplotlib.lines.Line2D at 0x7fae55300700>, <matplotlib.lines.Line2D at 0x7fae553007c0>, <matplotlib.lines.Line2D at 0x7fae55300880>, <matplotlib.lines.Line2D at 0x7fae55300940>, <matplotlib.lines.Line2D at 0x7fae55300a00>, <matplotlib.lines.Line2D at 0x7fae55300ac0>, <matplotlib.lines.Line2D at 0x7fae55300b80>, <matplotlib.lines.Line2D at 0x7fae55300c40>, <matplotlib.lines.Line2D at 0x7fae55300d00>, <matplotlib.lines.Line2D at 0x7fae55300dc0>, <matplotlib.lines.Line2D at 0x7fae55300e80>, <matplotlib.lines.Line2D at 0x7fae55300f40>, <matplotlib.lines.Line2D at 0x7fae55305040>, <matplotlib.lines.Line2D at 0x7fae55305100>, <matplotlib.lines.Line2D at 0x7fae553051c0>, <matplotlib.lines.Line2D at 0x7fae55305280>, <matplotlib.lines.Line2D at 0x7fae55305340>, <matplotlib.lines.Line2D at 0x7fae55305400>, <matplotlib.lines.Line2D at 0x7fae553054c0>, <matplotlib.lines.Line2D at 0x7fae55305580>, <matplotlib.lines.Line2D at 0x7fae55305640>, <matplotlib.lines.Line2D at 0x7fae55305700>, <matplotlib.lines.Line2D at 0x7fae553057c0>, <matplotlib.lines.Line2D at 0x7fae55305880>, <matplotlib.lines.Line2D at 0x7fae55305940>, <matplotlib.lines.Line2D at 0x7fae55305a00>, <matplotlib.lines.Line2D at 0x7fae55305ac0>, <matplotlib.lines.Line2D at 0x7fae55305b80>, <matplotlib.lines.Line2D at 0x7fae55305c40>, <matplotlib.lines.Line2D at 0x7fae55305d00>, <matplotlib.lines.Line2D at 0x7fae55305dc0>, <matplotlib.lines.Line2D at 0x7fae55305e80>, <matplotlib.lines.Line2D at 0x7fae55305f40>, <matplotlib.lines.Line2D at 0x7fae5530b040>, <matplotlib.lines.Line2D at 0x7fae5530b100>, <matplotlib.lines.Line2D at 0x7fae5530b1c0>, <matplotlib.lines.Line2D at 0x7fae5530b280>, <matplotlib.lines.Line2D at 0x7fae5530b340>, <matplotlib.lines.Line2D at 0x7fae5530b400>, <matplotlib.lines.Line2D at 0x7fae5530b4c0>, <matplotlib.lines.Line2D at 0x7fae5530b580>, <matplotlib.lines.Line2D at 0x7fae5530b640>, <matplotlib.lines.Line2D at 0x7fae5530b700>, <matplotlib.lines.Line2D at 0x7fae5530b7c0>, <matplotlib.lines.Line2D at 0x7fae5530b880>, <matplotlib.lines.Line2D at 0x7fae5530b940>, <matplotlib.lines.Line2D at 0x7fae5530ba00>, <matplotlib.lines.Line2D at 0x7fae5530bac0>, <matplotlib.lines.Line2D at 0x7fae5530bb80>, <matplotlib.lines.Line2D at 0x7fae5530bc40>, <matplotlib.lines.Line2D at 0x7fae5530bd00>, <matplotlib.lines.Line2D at 0x7fae5530bdc0>, <matplotlib.lines.Line2D at 0x7fae5530be80>, <matplotlib.lines.Line2D at 0x7fae5530bf40>, <matplotlib.lines.Line2D at 0x7fae55311040>, <matplotlib.lines.Line2D at 0x7fae55311100>, <matplotlib.lines.Line2D at 0x7fae553111c0>, <matplotlib.lines.Line2D at 0x7fae55311280>, <matplotlib.lines.Line2D at 0x7fae55311340>, <matplotlib.lines.Line2D at 0x7fae55311400>, <matplotlib.lines.Line2D at 0x7fae553114c0>, <matplotlib.lines.Line2D at 0x7fae55311580>, <matplotlib.lines.Line2D at 0x7fae55311640>, <matplotlib.lines.Line2D at 0x7fae55311700>, <matplotlib.lines.Line2D at 0x7fae553117c0>, <matplotlib.lines.Line2D at 0x7fae55311880>, <matplotlib.lines.Line2D at 0x7fae55311940>, <matplotlib.lines.Line2D at 0x7fae55311a00>, <matplotlib.lines.Line2D at 0x7fae55311ac0>, <matplotlib.lines.Line2D at 0x7fae55311b80>, <matplotlib.lines.Line2D at 0x7fae55311c40>, <matplotlib.lines.Line2D at 0x7fae55311d00>, <matplotlib.lines.Line2D at 0x7fae55311dc0>, <matplotlib.lines.Line2D at 0x7fae55311e80>, <matplotlib.lines.Line2D at 0x7fae55311f40>, <matplotlib.lines.Line2D at 0x7fae55317040>, <matplotlib.lines.Line2D at 0x7fae55317100>, <matplotlib.lines.Line2D at 0x7fae553171c0>, <matplotlib.lines.Line2D at 0x7fae55317280>, <matplotlib.lines.Line2D at 0x7fae55317340>, <matplotlib.lines.Line2D at 0x7fae55317400>, <matplotlib.lines.Line2D at 0x7fae553174c0>, <matplotlib.lines.Line2D at 0x7fae55317580>, <matplotlib.lines.Line2D at 0x7fae55317640>, <matplotlib.lines.Line2D at 0x7fae55317700>, <matplotlib.lines.Line2D at 0x7fae553177c0>, <matplotlib.lines.Line2D at 0x7fae55317880>, <matplotlib.lines.Line2D at 0x7fae55317940>, <matplotlib.lines.Line2D at 0x7fae55317a00>, <matplotlib.lines.Line2D at 0x7fae55317ac0>, <matplotlib.lines.Line2D at 0x7fae55317b80>, <matplotlib.lines.Line2D at 0x7fae55317c40>, <matplotlib.lines.Line2D at 0x7fae55317d00>, <matplotlib.lines.Line2D at 0x7fae55317dc0>, <matplotlib.lines.Line2D at 0x7fae55317e80>, <matplotlib.lines.Line2D at 0x7fae55317f40>, <matplotlib.lines.Line2D at 0x7fae5531d040>, <matplotlib.lines.Line2D at 0x7fae5531d100>, <matplotlib.lines.Line2D at 0x7fae5531d1c0>, <matplotlib.lines.Line2D at 0x7fae5531d280>, <matplotlib.lines.Line2D at 0x7fae5531d340>, <matplotlib.lines.Line2D at 0x7fae5531d400>, <matplotlib.lines.Line2D at 0x7fae5531d4c0>, <matplotlib.lines.Line2D at 0x7fae5531d580>, <matplotlib.lines.Line2D at 0x7fae5531d640>, <matplotlib.lines.Line2D at 0x7fae5531d700>, <matplotlib.lines.Line2D at 0x7fae5531d7c0>, <matplotlib.lines.Line2D at 0x7fae5531d880>, <matplotlib.lines.Line2D at 0x7fae5531d940>, <matplotlib.lines.Line2D at 0x7fae5531da00>, <matplotlib.lines.Line2D at 0x7fae5531dac0>, <matplotlib.lines.Line2D at 0x7fae5531db80>, <matplotlib.lines.Line2D at 0x7fae5531dc40>, <matplotlib.lines.Line2D at 0x7fae5531dd00>, <matplotlib.lines.Line2D at 0x7fae5531ddc0>, <matplotlib.lines.Line2D at 0x7fae5531de80>, <matplotlib.lines.Line2D at 0x7fae5531df40>, <matplotlib.lines.Line2D at 0x7fae55323040>, <matplotlib.lines.Line2D at 0x7fae55323100>, <matplotlib.lines.Line2D at 0x7fae553231c0>, <matplotlib.lines.Line2D at 0x7fae55323280>, <matplotlib.lines.Line2D at 0x7fae55323340>, <matplotlib.lines.Line2D at 0x7fae55323400>, <matplotlib.lines.Line2D at 0x7fae553234c0>, <matplotlib.lines.Line2D at 0x7fae55323580>, <matplotlib.lines.Line2D at 0x7fae55323640>, <matplotlib.lines.Line2D at 0x7fae55323700>, <matplotlib.lines.Line2D at 0x7fae553237c0>, <matplotlib.lines.Line2D at 0x7fae55323880>, <matplotlib.lines.Line2D at 0x7fae55323940>, <matplotlib.lines.Line2D at 0x7fae55323a00>, <matplotlib.lines.Line2D at 0x7fae55323ac0>, <matplotlib.lines.Line2D at 0x7fae55323b80>, <matplotlib.lines.Line2D at 0x7fae55323c40>, <matplotlib.lines.Line2D at 0x7fae55323d00>, <matplotlib.lines.Line2D at 0x7fae55323dc0>, <matplotlib.lines.Line2D at 0x7fae55323e80>, <matplotlib.lines.Line2D at 0x7fae55323f40>, <matplotlib.lines.Line2D at 0x7fae55328040>, <matplotlib.lines.Line2D at 0x7fae55328100>, <matplotlib.lines.Line2D at 0x7fae553281c0>, <matplotlib.lines.Line2D at 0x7fae55328280>, <matplotlib.lines.Line2D at 0x7fae55328340>, <matplotlib.lines.Line2D at 0x7fae55328400>, <matplotlib.lines.Line2D at 0x7fae553284c0>, <matplotlib.lines.Line2D at 0x7fae55328580>, <matplotlib.lines.Line2D at 0x7fae55328640>, <matplotlib.lines.Line2D at 0x7fae55328700>, <matplotlib.lines.Line2D at 0x7fae553287c0>, <matplotlib.lines.Line2D at 0x7fae55328880>, <matplotlib.lines.Line2D at 0x7fae55328940>, <matplotlib.lines.Line2D at 0x7fae55328a00>, <matplotlib.lines.Line2D at 0x7fae55328ac0>, <matplotlib.lines.Line2D at 0x7fae55328b80>, <matplotlib.lines.Line2D at 0x7fae55328c40>, <matplotlib.lines.Line2D at 0x7fae55328d00>, <matplotlib.lines.Line2D at 0x7fae55328dc0>, <matplotlib.lines.Line2D at 0x7fae55328e80>, <matplotlib.lines.Line2D at 0x7fae55328f40>, <matplotlib.lines.Line2D at 0x7fae5532f040>, <matplotlib.lines.Line2D at 0x7fae5532f100>, <matplotlib.lines.Line2D at 0x7fae5532f1c0>, <matplotlib.lines.Line2D at 0x7fae5532f280>, <matplotlib.lines.Line2D at 0x7fae5532f340>, <matplotlib.lines.Line2D at 0x7fae5532f400>, <matplotlib.lines.Line2D at 0x7fae5532f4c0>, <matplotlib.lines.Line2D at 0x7fae5532f580>, <matplotlib.lines.Line2D at 0x7fae5532f640>, <matplotlib.lines.Line2D at 0x7fae5532f700>, <matplotlib.lines.Line2D at 0x7fae5532f7c0>, <matplotlib.lines.Line2D at 0x7fae5532f880>, <matplotlib.lines.Line2D at 0x7fae5532f940>, <matplotlib.lines.Line2D at 0x7fae5532fa00>, <matplotlib.lines.Line2D at 0x7fae5532fac0>, <matplotlib.lines.Line2D at 0x7fae5532fb80>, <matplotlib.lines.Line2D at 0x7fae5532fc40>, <matplotlib.lines.Line2D at 0x7fae5532fd00>, <matplotlib.lines.Line2D at 0x7fae5532fdc0>, <matplotlib.lines.Line2D at 0x7fae5532fe80>, <matplotlib.lines.Line2D at 0x7fae5532ff40>, <matplotlib.lines.Line2D at 0x7fae55335040>, <matplotlib.lines.Line2D at 0x7fae55335100>, <matplotlib.lines.Line2D at 0x7fae553351c0>, <matplotlib.lines.Line2D at 0x7fae55335280>, <matplotlib.lines.Line2D at 0x7fae55335340>, <matplotlib.lines.Line2D at 0x7fae55335400>, <matplotlib.lines.Line2D at 0x7fae553354c0>, <matplotlib.lines.Line2D at 0x7fae55335580>, <matplotlib.lines.Line2D at 0x7fae55335640>, <matplotlib.lines.Line2D at 0x7fae55335700>, <matplotlib.lines.Line2D at 0x7fae553357c0>, <matplotlib.lines.Line2D at 0x7fae55335880>, <matplotlib.lines.Line2D at 0x7fae55335940>, <matplotlib.lines.Line2D at 0x7fae55335a00>, <matplotlib.lines.Line2D at 0x7fae55335ac0>, <matplotlib.lines.Line2D at 0x7fae55335b80>, <matplotlib.lines.Line2D at 0x7fae55335c40>, <matplotlib.lines.Line2D at 0x7fae55335d00>, <matplotlib.lines.Line2D at 0x7fae55335dc0>, <matplotlib.lines.Line2D at 0x7fae55335e80>, <matplotlib.lines.Line2D at 0x7fae55335f40>, <matplotlib.lines.Line2D at 0x7fae5533b040>, <matplotlib.lines.Line2D at 0x7fae5533b100>, <matplotlib.lines.Line2D at 0x7fae5533b1c0>, <matplotlib.lines.Line2D at 0x7fae5533b280>, <matplotlib.lines.Line2D at 0x7fae5533b340>, <matplotlib.lines.Line2D at 0x7fae5533b400>, <matplotlib.lines.Line2D at 0x7fae5533b4c0>, <matplotlib.lines.Line2D at 0x7fae5533b580>, <matplotlib.lines.Line2D at 0x7fae5533b640>, <matplotlib.lines.Line2D at 0x7fae5533b700>, <matplotlib.lines.Line2D at 0x7fae5533b7c0>, <matplotlib.lines.Line2D at 0x7fae5533b880>, <matplotlib.lines.Line2D at 0x7fae5533b940>, <matplotlib.lines.Line2D at 0x7fae5533ba00>, <matplotlib.lines.Line2D at 0x7fae5533bac0>, <matplotlib.lines.Line2D at 0x7fae5533bb80>, <matplotlib.lines.Line2D at 0x7fae5533bc40>, <matplotlib.lines.Line2D at 0x7fae5533bd00>, <matplotlib.lines.Line2D at 0x7fae5533bdc0>, <matplotlib.lines.Line2D at 0x7fae5533be80>, <matplotlib.lines.Line2D at 0x7fae5533bf40>, <matplotlib.lines.Line2D at 0x7fae55281040>, <matplotlib.lines.Line2D at 0x7fae55281100>, <matplotlib.lines.Line2D at 0x7fae552811c0>, <matplotlib.lines.Line2D at 0x7fae55281280>, <matplotlib.lines.Line2D at 0x7fae55281340>, <matplotlib.lines.Line2D at 0x7fae55281400>, <matplotlib.lines.Line2D at 0x7fae552814c0>, <matplotlib.lines.Line2D at 0x7fae55281580>, <matplotlib.lines.Line2D at 0x7fae55281640>, <matplotlib.lines.Line2D at 0x7fae55281700>, <matplotlib.lines.Line2D at 0x7fae552817c0>, <matplotlib.lines.Line2D at 0x7fae55281880>, <matplotlib.lines.Line2D at 0x7fae55281940>, <matplotlib.lines.Line2D at 0x7fae55281a00>, <matplotlib.lines.Line2D at 0x7fae55281ac0>, <matplotlib.lines.Line2D at 0x7fae55281b80>, <matplotlib.lines.Line2D at 0x7fae55281c40>, <matplotlib.lines.Line2D at 0x7fae55281d00>, <matplotlib.lines.Line2D at 0x7fae55281dc0>, <matplotlib.lines.Line2D at 0x7fae55281e80>, <matplotlib.lines.Line2D at 0x7fae55281f40>, <matplotlib.lines.Line2D at 0x7fae55287040>, <matplotlib.lines.Line2D at 0x7fae55287100>, <matplotlib.lines.Line2D at 0x7fae552871c0>, <matplotlib.lines.Line2D at 0x7fae55287280>, <matplotlib.lines.Line2D at 0x7fae55287340>, <matplotlib.lines.Line2D at 0x7fae55287400>, <matplotlib.lines.Line2D at 0x7fae552874c0>, <matplotlib.lines.Line2D at 0x7fae55287580>, <matplotlib.lines.Line2D at 0x7fae55287640>, <matplotlib.lines.Line2D at 0x7fae55287700>, <matplotlib.lines.Line2D at 0x7fae552877c0>, <matplotlib.lines.Line2D at 0x7fae55287880>, <matplotlib.lines.Line2D at 0x7fae55287940>, <matplotlib.lines.Line2D at 0x7fae55287a00>, <matplotlib.lines.Line2D at 0x7fae55287ac0>, <matplotlib.lines.Line2D at 0x7fae55287b80>, <matplotlib.lines.Line2D at 0x7fae55287c40>, <matplotlib.lines.Line2D at 0x7fae55287d00>, <matplotlib.lines.Line2D at 0x7fae55287dc0>, <matplotlib.lines.Line2D at 0x7fae55287e80>, <matplotlib.lines.Line2D at 0x7fae55287f40>, <matplotlib.lines.Line2D at 0x7fae5528c040>, <matplotlib.lines.Line2D at 0x7fae5528c100>, <matplotlib.lines.Line2D at 0x7fae5528c1c0>, <matplotlib.lines.Line2D at 0x7fae5528c280>, <matplotlib.lines.Line2D at 0x7fae5528c340>, <matplotlib.lines.Line2D at 0x7fae5528c400>, <matplotlib.lines.Line2D at 0x7fae5528c4c0>, <matplotlib.lines.Line2D at 0x7fae5528c580>, <matplotlib.lines.Line2D at 0x7fae5528c640>, <matplotlib.lines.Line2D at 0x7fae5528c700>, <matplotlib.lines.Line2D at 0x7fae5528c7c0>, <matplotlib.lines.Line2D at 0x7fae5528c880>, <matplotlib.lines.Line2D at 0x7fae5528c940>, <matplotlib.lines.Line2D at 0x7fae5528ca00>, <matplotlib.lines.Line2D at 0x7fae5528cac0>, <matplotlib.lines.Line2D at 0x7fae5528cb80>, <matplotlib.lines.Line2D at 0x7fae5528cc40>, <matplotlib.lines.Line2D at 0x7fae5528cd00>, <matplotlib.lines.Line2D at 0x7fae5528cdc0>, <matplotlib.lines.Line2D at 0x7fae5528ce80>, <matplotlib.lines.Line2D at 0x7fae5528cf40>, <matplotlib.lines.Line2D at 0x7fae55292040>, <matplotlib.lines.Line2D at 0x7fae55292100>, <matplotlib.lines.Line2D at 0x7fae552921c0>, <matplotlib.lines.Line2D at 0x7fae55292280>, <matplotlib.lines.Line2D at 0x7fae55292340>, <matplotlib.lines.Line2D at 0x7fae55292400>, <matplotlib.lines.Line2D at 0x7fae552924c0>, <matplotlib.lines.Line2D at 0x7fae55292580>, <matplotlib.lines.Line2D at 0x7fae55292640>, <matplotlib.lines.Line2D at 0x7fae55292700>, <matplotlib.lines.Line2D at 0x7fae552927c0>, <matplotlib.lines.Line2D at 0x7fae55292880>, <matplotlib.lines.Line2D at 0x7fae55292940>, <matplotlib.lines.Line2D at 0x7fae55292a00>, <matplotlib.lines.Line2D at 0x7fae55292ac0>, <matplotlib.lines.Line2D at 0x7fae55292b80>, <matplotlib.lines.Line2D at 0x7fae55292c40>, <matplotlib.lines.Line2D at 0x7fae55292d00>, <matplotlib.lines.Line2D at 0x7fae55292dc0>, <matplotlib.lines.Line2D at 0x7fae55292e80>, <matplotlib.lines.Line2D at 0x7fae55292f40>, <matplotlib.lines.Line2D at 0x7fae55298040>, <matplotlib.lines.Line2D at 0x7fae55298100>, <matplotlib.lines.Line2D at 0x7fae552981c0>, <matplotlib.lines.Line2D at 0x7fae55298280>, <matplotlib.lines.Line2D at 0x7fae55298340>, <matplotlib.lines.Line2D at 0x7fae55298400>, <matplotlib.lines.Line2D at 0x7fae552984c0>, <matplotlib.lines.Line2D at 0x7fae55298580>, <matplotlib.lines.Line2D at 0x7fae55298640>, <matplotlib.lines.Line2D at 0x7fae55298700>, <matplotlib.lines.Line2D at 0x7fae552987c0>, <matplotlib.lines.Line2D at 0x7fae55298880>, <matplotlib.lines.Line2D at 0x7fae55298940>, <matplotlib.lines.Line2D at 0x7fae55298a00>, <matplotlib.lines.Line2D at 0x7fae55298ac0>, <matplotlib.lines.Line2D at 0x7fae55298b80>, <matplotlib.lines.Line2D at 0x7fae55298c40>, <matplotlib.lines.Line2D at 0x7fae55298d00>, <matplotlib.lines.Line2D at 0x7fae55298dc0>, <matplotlib.lines.Line2D at 0x7fae55298e80>, <matplotlib.lines.Line2D at 0x7fae55298f40>, <matplotlib.lines.Line2D at 0x7fae5529e040>, <matplotlib.lines.Line2D at 0x7fae5529e100>, <matplotlib.lines.Line2D at 0x7fae5529e1c0>, <matplotlib.lines.Line2D at 0x7fae5529e280>, <matplotlib.lines.Line2D at 0x7fae5529e340>, <matplotlib.lines.Line2D at 0x7fae5529e400>, <matplotlib.lines.Line2D at 0x7fae5529e4c0>, <matplotlib.lines.Line2D at 0x7fae5529e580>, <matplotlib.lines.Line2D at 0x7fae5529e640>, <matplotlib.lines.Line2D at 0x7fae5529e700>, <matplotlib.lines.Line2D at 0x7fae5529e7c0>, <matplotlib.lines.Line2D at 0x7fae5529e880>, <matplotlib.lines.Line2D at 0x7fae5529e940>, <matplotlib.lines.Line2D at 0x7fae5529ea00>, <matplotlib.lines.Line2D at 0x7fae5529eac0>, <matplotlib.lines.Line2D at 0x7fae5529eb80>, <matplotlib.lines.Line2D at 0x7fae5529ec40>, <matplotlib.lines.Line2D at 0x7fae5529ed00>, <matplotlib.lines.Line2D at 0x7fae5529edc0>, <matplotlib.lines.Line2D at 0x7fae5529ee80>, <matplotlib.lines.Line2D at 0x7fae5529ef40>, <matplotlib.lines.Line2D at 0x7fae552a4040>, <matplotlib.lines.Line2D at 0x7fae552a4100>, <matplotlib.lines.Line2D at 0x7fae552a41c0>, <matplotlib.lines.Line2D at 0x7fae552a4280>, <matplotlib.lines.Line2D at 0x7fae552a4340>, <matplotlib.lines.Line2D at 0x7fae552a4400>, <matplotlib.lines.Line2D at 0x7fae552a44c0>, <matplotlib.lines.Line2D at 0x7fae552a4580>, <matplotlib.lines.Line2D at 0x7fae552a4640>, <matplotlib.lines.Line2D at 0x7fae552a4700>, <matplotlib.lines.Line2D at 0x7fae552a47c0>, <matplotlib.lines.Line2D at 0x7fae552a4880>, <matplotlib.lines.Line2D at 0x7fae552a4940>, <matplotlib.lines.Line2D at 0x7fae552a4a00>, <matplotlib.lines.Line2D at 0x7fae552a4ac0>, <matplotlib.lines.Line2D at 0x7fae552a4b80>, <matplotlib.lines.Line2D at 0x7fae552a4c40>, <matplotlib.lines.Line2D at 0x7fae552a4d00>, <matplotlib.lines.Line2D at 0x7fae552a4dc0>, <matplotlib.lines.Line2D at 0x7fae552a4e80>, <matplotlib.lines.Line2D at 0x7fae552a4f40>, <matplotlib.lines.Line2D at 0x7fae552aa040>, <matplotlib.lines.Line2D at 0x7fae552aa100>, <matplotlib.lines.Line2D at 0x7fae552aa1c0>, <matplotlib.lines.Line2D at 0x7fae552aa280>, <matplotlib.lines.Line2D at 0x7fae552aa340>, <matplotlib.lines.Line2D at 0x7fae552aa400>, <matplotlib.lines.Line2D at 0x7fae552aa4c0>, <matplotlib.lines.Line2D at 0x7fae552aa580>, <matplotlib.lines.Line2D at 0x7fae552aa640>, <matplotlib.lines.Line2D at 0x7fae552aa700>, <matplotlib.lines.Line2D at 0x7fae552aa7c0>, <matplotlib.lines.Line2D at 0x7fae552aa880>, <matplotlib.lines.Line2D at 0x7fae552aa940>, <matplotlib.lines.Line2D at 0x7fae552aaa00>, <matplotlib.lines.Line2D at 0x7fae552aaac0>, <matplotlib.lines.Line2D at 0x7fae552aab80>, <matplotlib.lines.Line2D at 0x7fae552aac40>, <matplotlib.lines.Line2D at 0x7fae552aad00>, <matplotlib.lines.Line2D at 0x7fae552aadc0>, <matplotlib.lines.Line2D at 0x7fae552aae80>, <matplotlib.lines.Line2D at 0x7fae552aaf40>, <matplotlib.lines.Line2D at 0x7fae552af040>, <matplotlib.lines.Line2D at 0x7fae552af100>, <matplotlib.lines.Line2D at 0x7fae552af1c0>, <matplotlib.lines.Line2D at 0x7fae552af280>, <matplotlib.lines.Line2D at 0x7fae552af340>, <matplotlib.lines.Line2D at 0x7fae552af400>, <matplotlib.lines.Line2D at 0x7fae552af4c0>, <matplotlib.lines.Line2D at 0x7fae552af580>, <matplotlib.lines.Line2D at 0x7fae552af640>, <matplotlib.lines.Line2D at 0x7fae552af700>, <matplotlib.lines.Line2D at 0x7fae552af7c0>, <matplotlib.lines.Line2D at 0x7fae552af880>, <matplotlib.lines.Line2D at 0x7fae552af940>, <matplotlib.lines.Line2D at 0x7fae552afa00>, <matplotlib.lines.Line2D at 0x7fae552afac0>, <matplotlib.lines.Line2D at 0x7fae552afb80>, <matplotlib.lines.Line2D at 0x7fae552afc40>, <matplotlib.lines.Line2D at 0x7fae552afd00>, <matplotlib.lines.Line2D at 0x7fae552afdc0>, <matplotlib.lines.Line2D at 0x7fae552afe80>, <matplotlib.lines.Line2D at 0x7fae552aff40>, <matplotlib.lines.Line2D at 0x7fae552b6040>, <matplotlib.lines.Line2D at 0x7fae552b6100>, <matplotlib.lines.Line2D at 0x7fae552b61c0>, <matplotlib.lines.Line2D at 0x7fae552b6280>, <matplotlib.lines.Line2D at 0x7fae552b6340>, <matplotlib.lines.Line2D at 0x7fae552b6400>, <matplotlib.lines.Line2D at 0x7fae552b64c0>, <matplotlib.lines.Line2D at 0x7fae552b6580>, <matplotlib.lines.Line2D at 0x7fae552b6640>, <matplotlib.lines.Line2D at 0x7fae552b6700>, <matplotlib.lines.Line2D at 0x7fae552b67c0>, <matplotlib.lines.Line2D at 0x7fae552b6880>, <matplotlib.lines.Line2D at 0x7fae552b6940>, <matplotlib.lines.Line2D at 0x7fae552b6a00>, <matplotlib.lines.Line2D at 0x7fae552b6ac0>, <matplotlib.lines.Line2D at 0x7fae552b6b80>, <matplotlib.lines.Line2D at 0x7fae552b6c40>, <matplotlib.lines.Line2D at 0x7fae552b6d00>, <matplotlib.lines.Line2D at 0x7fae552b6dc0>, <matplotlib.lines.Line2D at 0x7fae552b6e80>, <matplotlib.lines.Line2D at 0x7fae552b6f40>, <matplotlib.lines.Line2D at 0x7fae5523c040>, <matplotlib.lines.Line2D at 0x7fae5523c100>, <matplotlib.lines.Line2D at 0x7fae5523c1c0>, <matplotlib.lines.Line2D at 0x7fae5523c280>, <matplotlib.lines.Line2D at 0x7fae5523c340>, <matplotlib.lines.Line2D at 0x7fae5523c400>, <matplotlib.lines.Line2D at 0x7fae5523c4c0>, <matplotlib.lines.Line2D at 0x7fae5523c580>, <matplotlib.lines.Line2D at 0x7fae5523c640>, <matplotlib.lines.Line2D at 0x7fae5523c700>, <matplotlib.lines.Line2D at 0x7fae5523c7c0>, <matplotlib.lines.Line2D at 0x7fae5523c880>, <matplotlib.lines.Line2D at 0x7fae5523c940>, <matplotlib.lines.Line2D at 0x7fae5523ca00>, <matplotlib.lines.Line2D at 0x7fae5523cac0>, <matplotlib.lines.Line2D at 0x7fae5523cb80>, <matplotlib.lines.Line2D at 0x7fae5523cc40>, <matplotlib.lines.Line2D at 0x7fae5523cd00>, <matplotlib.lines.Line2D at 0x7fae5523cdc0>, <matplotlib.lines.Line2D at 0x7fae5523ce80>, <matplotlib.lines.Line2D at 0x7fae5523cf40>, <matplotlib.lines.Line2D at 0x7fae55242040>, <matplotlib.lines.Line2D at 0x7fae55242100>, <matplotlib.lines.Line2D at 0x7fae552421c0>, <matplotlib.lines.Line2D at 0x7fae55242280>, <matplotlib.lines.Line2D at 0x7fae55242340>, <matplotlib.lines.Line2D at 0x7fae55242400>, <matplotlib.lines.Line2D at 0x7fae552424c0>, <matplotlib.lines.Line2D at 0x7fae55242580>, <matplotlib.lines.Line2D at 0x7fae55242640>, <matplotlib.lines.Line2D at 0x7fae55242700>, <matplotlib.lines.Line2D at 0x7fae552427c0>, <matplotlib.lines.Line2D at 0x7fae55242880>, <matplotlib.lines.Line2D at 0x7fae55242940>, <matplotlib.lines.Line2D at 0x7fae55242a00>, <matplotlib.lines.Line2D at 0x7fae55242ac0>, <matplotlib.lines.Line2D at 0x7fae5d6dfb50>, <matplotlib.lines.Line2D at 0x7fae5ccfe400>, <matplotlib.lines.Line2D at 0x7fae5cc75940>, <matplotlib.lines.Line2D at 0x7fae5cc6beb0>, <matplotlib.lines.Line2D at 0x7fae5cbf04c0>, <matplotlib.lines.Line2D at 0x7fae5c2eba00>, <matplotlib.lines.Line2D at 0x7fae5c261f70>, <matplotlib.lines.Line2D at 0x7fae5c190250>, <matplotlib.lines.Line2D at 0x7fae5c1b5b20>, <matplotlib.lines.Line2D at 0x7fae5c1445e0>, <matplotlib.lines.Line2D at 0x7fae5c14bf10>, <matplotlib.lines.Line2D at 0x7fae5c159b20>, <matplotlib.lines.Line2D at 0x7fae5c1695e0>, <matplotlib.lines.Line2D at 0x7fae5c170f10>, <matplotlib.lines.Line2D at 0x7fae5c0fdb20>, <matplotlib.lines.Line2D at 0x7fae5c10d5e0>, <matplotlib.lines.Line2D at 0x7fae5c114f10>, <matplotlib.lines.Line2D at 0x7fae5c123b20>, <matplotlib.lines.Line2D at 0x7fae5c1335e0>, <matplotlib.lines.Line2D at 0x7fae5c0baf10>, <matplotlib.lines.Line2D at 0x7fae5c0c9b20>, <matplotlib.lines.Line2D at 0x7fae5c0d85e0>, <matplotlib.lines.Line2D at 0x7fae5c0e0f10>, <matplotlib.lines.Line2D at 0x7fae5c0ed700>, <matplotlib.lines.Line2D at 0x7fae5c07e220>, <matplotlib.lines.Line2D at 0x7fae5c084ca0>, <matplotlib.lines.Line2D at 0x7fae5c094760>, <matplotlib.lines.Line2D at 0x7fae5c0a3220>, <matplotlib.lines.Line2D at 0x7fae5c0abcd0>, <matplotlib.lines.Line2D at 0x7fae5c039790>, <matplotlib.lines.Line2D at 0x7fae5c048250>, <matplotlib.lines.Line2D at 0x7fae5c050cd0>, <matplotlib.lines.Line2D at 0x7fae5c05e790>, <matplotlib.lines.Line2D at 0x7fae55ef5af0>, <matplotlib.lines.Line2D at 0x7fae5d8694c0>, <matplotlib.lines.Line2D at 0x7fae5d863a00>, <matplotlib.lines.Line2D at 0x7fae5d8aafa0>, <matplotlib.lines.Line2D at 0x7fae5d90c940>, <matplotlib.lines.Line2D at 0x7fae5d8bec40>, <matplotlib.lines.Line2D at 0x7fae5d8b5130>, <matplotlib.lines.Line2D at 0x7fae5d8b55e0>, <matplotlib.lines.Line2D at 0x7fae5d8c8700>, <matplotlib.lines.Line2D at 0x7fae5d8d44c0>, <matplotlib.lines.Line2D at 0x7fae5d89fc70>, <matplotlib.lines.Line2D at 0x7fae5dae7a90>, <matplotlib.lines.Line2D at 0x7fae5d8b2730>, <matplotlib.lines.Line2D at 0x7fae55b29520>, <matplotlib.lines.Line2D at 0x7fae55b29fa0>, <matplotlib.lines.Line2D at 0x7fae55b35a60>, <matplotlib.lines.Line2D at 0x7fae55ac3520>, <matplotlib.lines.Line2D at 0x7fae55ac3fa0>, <matplotlib.lines.Line2D at 0x7fae55ad0a60>, <matplotlib.lines.Line2D at 0x7fae55ade520>, <matplotlib.lines.Line2D at 0x7fae55adefa0>, <matplotlib.lines.Line2D at 0x7fae55aeaa60>, <matplotlib.lines.Line2D at 0x7fae55af8520>, <matplotlib.lines.Line2D at 0x7fae55af8fa0>, <matplotlib.lines.Line2D at 0x7fae55a86a60>, <matplotlib.lines.Line2D at 0x7fae55a92520>, <matplotlib.lines.Line2D at 0x7fae55a92fa0>, <matplotlib.lines.Line2D at 0x7fae55a9fa60>, <matplotlib.lines.Line2D at 0x7fae55aae520>, <matplotlib.lines.Line2D at 0x7fae55aaefa0>, <matplotlib.lines.Line2D at 0x7fae55ab9a60>, <matplotlib.lines.Line2D at 0x7fae55a47520>, <matplotlib.lines.Line2D at 0x7fae55a47fa0>, <matplotlib.lines.Line2D at 0x7fae55a53a60>, <matplotlib.lines.Line2D at 0x7fae55a60520>, <matplotlib.lines.Line2D at 0x7fae55a60fa0>, <matplotlib.lines.Line2D at 0x7fae55a6da60>, <matplotlib.lines.Line2D at 0x7fae559fc520>, <matplotlib.lines.Line2D at 0x7fae559fcfa0>, <matplotlib.lines.Line2D at 0x7fae55a0aa60>, <matplotlib.lines.Line2D at 0x7fae55a15520>, <matplotlib.lines.Line2D at 0x7fae55a15fa0>, <matplotlib.lines.Line2D at 0x7fae55a24a60>, <matplotlib.lines.Line2D at 0x7fae55a31520>, <matplotlib.lines.Line2D at 0x7fae55a31fa0>, <matplotlib.lines.Line2D at 0x7fae559bea60>, <matplotlib.lines.Line2D at 0x7fae559ca520>, <matplotlib.lines.Line2D at 0x7fae559cafa0>, <matplotlib.lines.Line2D at 0x7fae559d8a60>, <matplotlib.lines.Line2D at 0x7fae559e6520>, <matplotlib.lines.Line2D at 0x7fae559e6fa0>, <matplotlib.lines.Line2D at 0x7fae559f3a60>, <matplotlib.lines.Line2D at 0x7fae5597f520>, <matplotlib.lines.Line2D at 0x7fae5597ffa0>, <matplotlib.lines.Line2D at 0x7fae5598ca60>, <matplotlib.lines.Line2D at 0x7fae5599a520>, <matplotlib.lines.Line2D at 0x7fae5599afa0>, <matplotlib.lines.Line2D at 0x7fae559a6a60>, <matplotlib.lines.Line2D at 0x7fae559b3520>, <matplotlib.lines.Line2D at 0x7fae559b3fa0>, <matplotlib.lines.Line2D at 0x7fae55941a60>, <matplotlib.lines.Line2D at 0x7fae5594f520>, <matplotlib.lines.Line2D at 0x7fae5594ffa0>, <matplotlib.lines.Line2D at 0x7fae5595ca60>, <matplotlib.lines.Line2D at 0x7fae5596a520>, <matplotlib.lines.Line2D at 0x7fae5596afa0>, <matplotlib.lines.Line2D at 0x7fae55976a60>, <matplotlib.lines.Line2D at 0x7fae55903520>, <matplotlib.lines.Line2D at 0x7fae55903fa0>, <matplotlib.lines.Line2D at 0x7fae55911a60>, <matplotlib.lines.Line2D at 0x7fae5591f520>, <matplotlib.lines.Line2D at 0x7fae5591ffa0>, <matplotlib.lines.Line2D at 0x7fae55929a60>, <matplotlib.lines.Line2D at 0x7fae55938520>, <matplotlib.lines.Line2D at 0x7fae55938fa0>, <matplotlib.lines.Line2D at 0x7fae558c6a60>, <matplotlib.lines.Line2D at 0x7fae558d2520>, <matplotlib.lines.Line2D at 0x7fae558d2fa0>, <matplotlib.lines.Line2D at 0x7fae558dfa60>, <matplotlib.lines.Line2D at 0x7fae558ec520>, <matplotlib.lines.Line2D at 0x7fae558ecfa0>, <matplotlib.lines.Line2D at 0x7fae558faa60>, <matplotlib.lines.Line2D at 0x7fae55887520>, <matplotlib.lines.Line2D at 0x7fae55887fa0>, <matplotlib.lines.Line2D at 0x7fae55895a60>, <matplotlib.lines.Line2D at 0x7fae558a1520>, <matplotlib.lines.Line2D at 0x7fae558a1fa0>, <matplotlib.lines.Line2D at 0x7fae558b0a60>, <matplotlib.lines.Line2D at 0x7fae5583c520>, <matplotlib.lines.Line2D at 0x7fae5583cfa0>, <matplotlib.lines.Line2D at 0x7fae55849a60>, <matplotlib.lines.Line2D at 0x7fae55857520>, <matplotlib.lines.Line2D at 0x7fae55857fa0>, <matplotlib.lines.Line2D at 0x7fae55862a60>, <matplotlib.lines.Line2D at 0x7fae55870520>, <matplotlib.lines.Line2D at 0x7fae55870fa0>, <matplotlib.lines.Line2D at 0x7fae557fda60>, <matplotlib.lines.Line2D at 0x7fae5580b520>, <matplotlib.lines.Line2D at 0x7fae5580bfa0>, <matplotlib.lines.Line2D at 0x7fae55817a60>, <matplotlib.lines.Line2D at 0x7fae55826520>, <matplotlib.lines.Line2D at 0x7fae55826fa0>, <matplotlib.lines.Line2D at 0x7fae55833a60>, <matplotlib.lines.Line2D at 0x7fae557bf520>, <matplotlib.lines.Line2D at 0x7fae557bffa0>, <matplotlib.lines.Line2D at 0x7fae557cda60>, <matplotlib.lines.Line2D at 0x7fae557db520>, <matplotlib.lines.Line2D at 0x7fae557dbfa0>, <matplotlib.lines.Line2D at 0x7fae557e8a60>, <matplotlib.lines.Line2D at 0x7fae557f5520>, <matplotlib.lines.Line2D at 0x7fae557f5fa0>, <matplotlib.lines.Line2D at 0x7fae55782a60>, <matplotlib.lines.Line2D at 0x7fae5578f520>, <matplotlib.lines.Line2D at 0x7fae5578ffa0>, <matplotlib.lines.Line2D at 0x7fae5579ca60>, <matplotlib.lines.Line2D at 0x7fae557a8520>, <matplotlib.lines.Line2D at 0x7fae557a8fa0>, <matplotlib.lines.Line2D at 0x7fae557b6a60>, <matplotlib.lines.Line2D at 0x7fae55744520>, <matplotlib.lines.Line2D at 0x7fae55744fa0>, <matplotlib.lines.Line2D at 0x7fae55750a60>, <matplotlib.lines.Line2D at 0x7fae5575d520>, <matplotlib.lines.Line2D at 0x7fae5575dfa0>, <matplotlib.lines.Line2D at 0x7fae5576ba60>, <matplotlib.lines.Line2D at 0x7fae55778520>, <matplotlib.lines.Line2D at 0x7fae55778fa0>, <matplotlib.lines.Line2D at 0x7fae55706a60>, <matplotlib.lines.Line2D at 0x7fae55712520>, <matplotlib.lines.Line2D at 0x7fae55712fa0>, <matplotlib.lines.Line2D at 0x7fae55720a60>, <matplotlib.lines.Line2D at 0x7fae5572c520>, <matplotlib.lines.Line2D at 0x7fae5572cfa0>, <matplotlib.lines.Line2D at 0x7fae5573ba60>, <matplotlib.lines.Line2D at 0x7fae556c8520>, <matplotlib.lines.Line2D at 0x7fae556c8fa0>, <matplotlib.lines.Line2D at 0x7fae556d3a60>, <matplotlib.lines.Line2D at 0x7fae556e2520>, <matplotlib.lines.Line2D at 0x7fae556e2fa0>, <matplotlib.lines.Line2D at 0x7fae556efa60>, <matplotlib.lines.Line2D at 0x7fae5567c520>, <matplotlib.lines.Line2D at 0x7fae5567cfa0>, <matplotlib.lines.Line2D at 0x7fae55688a60>, <matplotlib.lines.Line2D at 0x7fae55697520>, <matplotlib.lines.Line2D at 0x7fae55697fa0>, <matplotlib.lines.Line2D at 0x7fae556a3a60>, <matplotlib.lines.Line2D at 0x7fae556b2520>, <matplotlib.lines.Line2D at 0x7fae556b2fa0>, <matplotlib.lines.Line2D at 0x7fae5563da60>, <matplotlib.lines.Line2D at 0x7fae5564c520>, <matplotlib.lines.Line2D at 0x7fae5564cfa0>, <matplotlib.lines.Line2D at 0x7fae55659a60>, <matplotlib.lines.Line2D at 0x7fae55665520>, <matplotlib.lines.Line2D at 0x7fae55665fa0>, <matplotlib.lines.Line2D at 0x7fae55673a60>, <matplotlib.lines.Line2D at 0x7fae55600520>, <matplotlib.lines.Line2D at 0x7fae55600fa0>, <matplotlib.lines.Line2D at 0x7fae5560da60>, <matplotlib.lines.Line2D at 0x7fae55619520>, <matplotlib.lines.Line2D at 0x7fae55619fa0>, <matplotlib.lines.Line2D at 0x7fae55627a60>, <matplotlib.lines.Line2D at 0x7fae55633520>, <matplotlib.lines.Line2D at 0x7fae55633fa0>, <matplotlib.lines.Line2D at 0x7fae555c1a60>, <matplotlib.lines.Line2D at 0x7fae555cf520>, <matplotlib.lines.Line2D at 0x7fae555cffa0>, <matplotlib.lines.Line2D at 0x7fae555dda60>, <matplotlib.lines.Line2D at 0x7fae555e9520>, <matplotlib.lines.Line2D at 0x7fae555e9fa0>, <matplotlib.lines.Line2D at 0x7fae555f7a60>, <matplotlib.lines.Line2D at 0x7fae5c19c820>, <matplotlib.lines.Line2D at 0x7fae55585a60>, <matplotlib.lines.Line2D at 0x7fae55ed72e0>, <matplotlib.lines.Line2D at 0x7fae5557a220>, <matplotlib.lines.Line2D at 0x7fae5557ae50>, <matplotlib.lines.Line2D at 0x7fae5d8768b0>, <matplotlib.lines.Line2D at 0x7fae5da79490>, <matplotlib.lines.Line2D at 0x7fae55502070>, <matplotlib.lines.Line2D at 0x7fae55502220>, <matplotlib.lines.Line2D at 0x7fae55502610>, <matplotlib.lines.Line2D at 0x7fae555027f0>, <matplotlib.lines.Line2D at 0x7fae555029d0>, <matplotlib.lines.Line2D at 0x7fae55502bb0>, <matplotlib.lines.Line2D at 0x7fae55502d90>, <matplotlib.lines.Line2D at 0x7fae55502f70>, <matplotlib.lines.Line2D at 0x7fae555080a0>, <matplotlib.lines.Line2D at 0x7fae55508130>, <matplotlib.lines.Line2D at 0x7fae55508310>, <matplotlib.lines.Line2D at 0x7fae555085b0>, <matplotlib.lines.Line2D at 0x7fae55508670>, <matplotlib.lines.Line2D at 0x7fae55508850>, <matplotlib.lines.Line2D at 0x7fae55508a30>, <matplotlib.lines.Line2D at 0x7fae55508c10>, <matplotlib.lines.Line2D at 0x7fae55508df0>, <matplotlib.lines.Line2D at 0x7fae5550f040>, <matplotlib.lines.Line2D at 0x7fae5550f1f0>, <matplotlib.lines.Line2D at 0x7fae5550f3d0>, <matplotlib.lines.Line2D at 0x7fae5550f5b0>, <matplotlib.lines.Line2D at 0x7fae5550f790>, <matplotlib.lines.Line2D at 0x7fae5550f970>, <matplotlib.lines.Line2D at 0x7fae5550fb50>, <matplotlib.lines.Line2D at 0x7fae5550fd30>, <matplotlib.lines.Line2D at 0x7fae555160a0>, <matplotlib.lines.Line2D at 0x7fae55516130>, <matplotlib.lines.Line2D at 0x7fae55516310>, <matplotlib.lines.Line2D at 0x7fae555164f0>, <matplotlib.lines.Line2D at 0x7fae555166d0>, <matplotlib.lines.Line2D at 0x7fae555168b0>, <matplotlib.lines.Line2D at 0x7fae55516a90>, <matplotlib.lines.Line2D at 0x7fae55516c70>, <matplotlib.lines.Line2D at 0x7fae55516e50>, <matplotlib.lines.Line2D at 0x7fae5551e070>, <matplotlib.lines.Line2D at 0x7fae5551e250>, <matplotlib.lines.Line2D at 0x7fae5551e430>, <matplotlib.lines.Line2D at 0x7fae5551e610>, <matplotlib.lines.Line2D at 0x7fae5551e7f0>, <matplotlib.lines.Line2D at 0x7fae5551e9d0>, <matplotlib.lines.Line2D at 0x7fae5551ebb0>, <matplotlib.lines.Line2D at 0x7fae5551ed90>, <matplotlib.lines.Line2D at 0x7fae55524100>, <matplotlib.lines.Line2D at 0x7fae55524190>, <matplotlib.lines.Line2D at 0x7fae55524370>, <matplotlib.lines.Line2D at 0x7fae55524550>, <matplotlib.lines.Line2D at 0x7fae55524730>, <matplotlib.lines.Line2D at 0x7fae55524910>, <matplotlib.lines.Line2D at 0x7fae55524af0>, <matplotlib.lines.Line2D at 0x7fae55524cd0>, <matplotlib.lines.Line2D at 0x7fae55524fa0>, <matplotlib.lines.Line2D at 0x7fae5552c0d0>, <matplotlib.lines.Line2D at 0x7fae5552c2b0>, <matplotlib.lines.Line2D at 0x7fae5552c490>, <matplotlib.lines.Line2D at 0x7fae5552c670>, <matplotlib.lines.Line2D at 0x7fae5552c850>, <matplotlib.lines.Line2D at 0x7fae5552ca30>, <matplotlib.lines.Line2D at 0x7fae5552cc10>, <matplotlib.lines.Line2D at 0x7fae5552cdf0>, <matplotlib.lines.Line2D at 0x7fae55533040>, <matplotlib.lines.Line2D at 0x7fae555331f0>, <matplotlib.lines.Line2D at 0x7fae555333d0>, <matplotlib.lines.Line2D at 0x7fae555335b0>, <matplotlib.lines.Line2D at 0x7fae55533790>, <matplotlib.lines.Line2D at 0x7fae55533970>, <matplotlib.lines.Line2D at 0x7fae55533b50>, <matplotlib.lines.Line2D at 0x7fae55533d30>, <matplotlib.lines.Line2D at 0x7fae5553a0a0>, <matplotlib.lines.Line2D at 0x7fae5553a130>, <matplotlib.lines.Line2D at 0x7fae5553a310>, <matplotlib.lines.Line2D at 0x7fae5553a4f0>, <matplotlib.lines.Line2D at 0x7fae5553a6d0>, <matplotlib.lines.Line2D at 0x7fae5553a8b0>, <matplotlib.lines.Line2D at 0x7fae5553aa90>, <matplotlib.lines.Line2D at 0x7fae5553ac70>, <matplotlib.lines.Line2D at 0x7fae5553ae50>, <matplotlib.lines.Line2D at 0x7fae554c2070>, <matplotlib.lines.Line2D at 0x7fae554c2250>, <matplotlib.lines.Line2D at 0x7fae554c2430>, <matplotlib.lines.Line2D at 0x7fae554c2610>, <matplotlib.lines.Line2D at 0x7fae554c27f0>, <matplotlib.lines.Line2D at 0x7fae554c29d0>, <matplotlib.lines.Line2D at 0x7fae554c2bb0>, <matplotlib.lines.Line2D at 0x7fae554c2d90>, <matplotlib.lines.Line2D at 0x7fae554c8100>, <matplotlib.lines.Line2D at 0x7fae554c8190>, <matplotlib.lines.Line2D at 0x7fae554c8370>, <matplotlib.lines.Line2D at 0x7fae554c8550>, <matplotlib.lines.Line2D at 0x7fae554c8730>, <matplotlib.lines.Line2D at 0x7fae554c8910>, <matplotlib.lines.Line2D at 0x7fae554c8af0>, <matplotlib.lines.Line2D at 0x7fae554c8cd0>, <matplotlib.lines.Line2D at 0x7fae554c8fa0>, <matplotlib.lines.Line2D at 0x7fae554d10d0>, <matplotlib.lines.Line2D at 0x7fae554d12b0>, <matplotlib.lines.Line2D at 0x7fae554d1490>, <matplotlib.lines.Line2D at 0x7fae554d1670>, <matplotlib.lines.Line2D at 0x7fae554d1850>, <matplotlib.lines.Line2D at 0x7fae554d1a30>, <matplotlib.lines.Line2D at 0x7fae554d1c10>, <matplotlib.lines.Line2D at 0x7fae554d1df0>, <matplotlib.lines.Line2D at 0x7fae554d8040>, <matplotlib.lines.Line2D at 0x7fae554d81f0>, <matplotlib.lines.Line2D at 0x7fae554d83d0>, <matplotlib.lines.Line2D at 0x7fae554d85b0>, <matplotlib.lines.Line2D at 0x7fae554d8790>, <matplotlib.lines.Line2D at 0x7fae554d8970>, <matplotlib.lines.Line2D at 0x7fae554d8b50>, <matplotlib.lines.Line2D at 0x7fae554d8d30>, <matplotlib.lines.Line2D at 0x7fae554df0a0>, <matplotlib.lines.Line2D at 0x7fae554df130>, <matplotlib.lines.Line2D at 0x7fae554df310>, <matplotlib.lines.Line2D at 0x7fae554df4f0>, <matplotlib.lines.Line2D at 0x7fae554df6d0>, <matplotlib.lines.Line2D at 0x7fae554df8b0>, <matplotlib.lines.Line2D at 0x7fae554dfa90>, <matplotlib.lines.Line2D at 0x7fae554dfc70>, <matplotlib.lines.Line2D at 0x7fae554dfe50>, <matplotlib.lines.Line2D at 0x7fae554e8070>, <matplotlib.lines.Line2D at 0x7fae554e8250>, <matplotlib.lines.Line2D at 0x7fae554e8430>, <matplotlib.lines.Line2D at 0x7fae554e8610>, <matplotlib.lines.Line2D at 0x7fae554e87f0>, <matplotlib.lines.Line2D at 0x7fae554e89d0>, <matplotlib.lines.Line2D at 0x7fae554e8bb0>, <matplotlib.lines.Line2D at 0x7fae554e8d90>, <matplotlib.lines.Line2D at 0x7fae554ee100>, <matplotlib.lines.Line2D at 0x7fae554ee190>, <matplotlib.lines.Line2D at 0x7fae554ee370>, <matplotlib.lines.Line2D at 0x7fae554ee550>, <matplotlib.lines.Line2D at 0x7fae554ee730>, <matplotlib.lines.Line2D at 0x7fae554ee910>, <matplotlib.lines.Line2D at 0x7fae554eeaf0>, <matplotlib.lines.Line2D at 0x7fae554eecd0>, <matplotlib.lines.Line2D at 0x7fae554eefa0>, <matplotlib.lines.Line2D at 0x7fae554f60d0>, <matplotlib.lines.Line2D at 0x7fae554f62b0>, <matplotlib.lines.Line2D at 0x7fae554f6490>, <matplotlib.lines.Line2D at 0x7fae554f6670>, <matplotlib.lines.Line2D at 0x7fae554f6850>, <matplotlib.lines.Line2D at 0x7fae554f6a30>, <matplotlib.lines.Line2D at 0x7fae554f6c10>, <matplotlib.lines.Line2D at 0x7fae554f6df0>, <matplotlib.lines.Line2D at 0x7fae5547c040>, <matplotlib.lines.Line2D at 0x7fae5547c1f0>, <matplotlib.lines.Line2D at 0x7fae5547c3d0>, <matplotlib.lines.Line2D at 0x7fae5547c5b0>, <matplotlib.lines.Line2D at 0x7fae5547c790>, <matplotlib.lines.Line2D at 0x7fae5547c970>, <matplotlib.lines.Line2D at 0x7fae5547cb50>, <matplotlib.lines.Line2D at 0x7fae5547cd30>, <matplotlib.lines.Line2D at 0x7fae554850a0>, <matplotlib.lines.Line2D at 0x7fae55485130>, <matplotlib.lines.Line2D at 0x7fae55485310>, <matplotlib.lines.Line2D at 0x7fae554854f0>, <matplotlib.lines.Line2D at 0x7fae554856d0>, <matplotlib.lines.Line2D at 0x7fae554858b0>, <matplotlib.lines.Line2D at 0x7fae55485a90>, <matplotlib.lines.Line2D at 0x7fae55485c70>, <matplotlib.lines.Line2D at 0x7fae55485e50>, <matplotlib.lines.Line2D at 0x7fae5548d070>, <matplotlib.lines.Line2D at 0x7fae5548d250>, <matplotlib.lines.Line2D at 0x7fae5548d430>, <matplotlib.lines.Line2D at 0x7fae5548d610>, <matplotlib.lines.Line2D at 0x7fae5548d7f0>, <matplotlib.lines.Line2D at 0x7fae5548d9d0>, <matplotlib.lines.Line2D at 0x7fae5548dbb0>, <matplotlib.lines.Line2D at 0x7fae5548dd90>, <matplotlib.lines.Line2D at 0x7fae55493100>, <matplotlib.lines.Line2D at 0x7fae55493190>, <matplotlib.lines.Line2D at 0x7fae55493370>, <matplotlib.lines.Line2D at 0x7fae55493550>, <matplotlib.lines.Line2D at 0x7fae55493730>, <matplotlib.lines.Line2D at 0x7fae55493910>, <matplotlib.lines.Line2D at 0x7fae55493af0>, <matplotlib.lines.Line2D at 0x7fae55493cd0>, <matplotlib.lines.Line2D at 0x7fae55493fa0>, <matplotlib.lines.Line2D at 0x7fae5549c0d0>, <matplotlib.lines.Line2D at 0x7fae5549c2b0>, <matplotlib.lines.Line2D at 0x7fae5549c490>, <matplotlib.lines.Line2D at 0x7fae5549c670>, <matplotlib.lines.Line2D at 0x7fae5549c850>, <matplotlib.lines.Line2D at 0x7fae5549ca30>, <matplotlib.lines.Line2D at 0x7fae5549cc10>, <matplotlib.lines.Line2D at 0x7fae5549cdf0>, <matplotlib.lines.Line2D at 0x7fae554a2040>, <matplotlib.lines.Line2D at 0x7fae554a21f0>, <matplotlib.lines.Line2D at 0x7fae554a23d0>, <matplotlib.lines.Line2D at 0x7fae554a25b0>, <matplotlib.lines.Line2D at 0x7fae554a2790>, <matplotlib.lines.Line2D at 0x7fae554a2970>, <matplotlib.lines.Line2D at 0x7fae554a2b50>, <matplotlib.lines.Line2D at 0x7fae554a2d30>, <matplotlib.lines.Line2D at 0x7fae554aa0a0>, <matplotlib.lines.Line2D at 0x7fae554aa130>, <matplotlib.lines.Line2D at 0x7fae554aa310>, <matplotlib.lines.Line2D at 0x7fae554aa4f0>, <matplotlib.lines.Line2D at 0x7fae554aa6d0>, <matplotlib.lines.Line2D at 0x7fae554aa8b0>, <matplotlib.lines.Line2D at 0x7fae554aaa90>, <matplotlib.lines.Line2D at 0x7fae554aac70>, <matplotlib.lines.Line2D at 0x7fae554aae50>, <matplotlib.lines.Line2D at 0x7fae554b2070>, ...]
In [ ]: