im_matplotlib

September 26, 2021

1 matplotlib

matplotlib is the most used to plot. It is the reference. Every plotting works the same way:

• We define axis (they boundaries can be adjusted based on thedata) • We add curves, points, surfaces (A). • We add legendes (B). • We convert the plot into an image.

Step (A) and (B) can be repeated in any order. Curves and legends superimposed. documentation source installation tutorial gallery [1]: %matplotlib inline

[2]: from jyquickhelper import add_notebook_menu add_notebook_menu()

[2]:

1.1 Setup Some parts of matplotlib are written in and needs to be compiled. Thus the instruction pip install matplotlib usually fails on Windows unless Visual Studio 2015 Community Edition is installed. I recom- mend to use a precompiled version through conda install matplotlib or Unofficial Windows Binaries for Python Extension Packages sous Windows. [3]: import matplotlib.pyplot as plt

1.2 First example

[4]: import numpy as np import matplotlib.pyplot as plt

N = 150 r = 2 * np.random.rand(N) theta = 2 * np.pi * np.random.rand(N) area = 200 * r**2 * np.random.rand(N) colors = theta

ax = plt.subplot(111, projection='polar')

1 c = plt.scatter(theta, r, c=colors, s=area, cmap=plt.cm.hsv) c.set_alpha(0.75)

1.3 Animation To make it work:

• Install ffmpeg on Windows or avconv on • On Windows, open file matplotlibrc and update parameter animation.ffmpeg_path. On Linux, the same must be done for avconv.

[5]: import matplotlib matplotlib.matplotlib_fname()

[5]: 'c:\\Python36_x64\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

[6]: import os matplotlib.rcParams['animation.ffmpeg_path'].replace(os.environ.get("USERPROFILE",␣ ,→"~"), "")

[6]: '\\ffmpeg-20170821-d826951-win64-static\\bin\\ffmpeg.exe'

[7]: import matplotlib.animation matplotlib.animation.writers.list()

[7]: ['ffmpeg', 'ffmpeg_file']

Let’s take an example from matplotlib documentation bayes_update.

2 [8]: import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation

def data_gen(): t = data_gen.t cnt = 0 while cnt < 1000: cnt+=1 t += 0.05 yield t, np.sin(2*np.pi*t) * np.exp(-t/10.) data_gen.t = 0

fig, ax = plt.subplots() line, = ax.plot([], [], lw=2) ax.set_ylim(-1.1, 1.1) ax.set_xlim(0, 5) ax.grid() xdata, ydata = [], [] def run(data): # update the data t,y = data xdata.append(t) ydata.append(y) xmin, xmax = ax.get_xlim()

if t >= xmax: ax.set_xlim(xmin, 2*xmax) ax.figure.canvas.draw() line.set_data(xdata, ydata)

return line,

= animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,␣ ,→repeat=False)

# saves the video from matplotlib.animation import writers Writer = writers['ffmpeg'] writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800) anim.save('lines2.mp4', writer=writer)

3 [9]: import os [_ for _ in os.listdir(".") if "mp4" in _]

[9]: ['lines2.mp4']

Open question : how to display the video in the notebook?

1.4 Interactions Interaction can be done with the regular GUI. See poly_editor.py. Use javascript! [10]:

[11]:

4