Saya mencoba sekali lagi untuk menggunakan plot matplotlib interaktif di Jupyter Notebooks untuk siswa saya. Rencana saya adalah menggunakan JupyterLab karena antarmuka Notebook biasa tidak terlalu disukai di kalangan siswa. Berikut adalah notebook MWE dua sel:

import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt

Sel berikutnya:

plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()

Ketika saya menjalankan sel-sel ini, saya mendapatkan plot Matplotlib interaktif. Tetapi ketika saya menjalankan sel kedua untuk kedua kalinya, jendela plot menghilang tanpa peringatan atau kesalahan dan hanya kembali ketika saya menjalankan kembali sel pertama sebelum sel kedua. Antarmuka notebook klasik menunjukkan perilaku yang sama, menjatuhkan plt.show() atau plt.figure() juga tidak ada bedanya.

Saya menjalankan Server Jupyter secara lokal pada mesin Windows 10 di lingkungan venv, versi berikut diinstal:

Python           : 3.8.2
ipympl           : 0.7.0

jupyter core     : 4.7.1
jupyter-notebook : 6.3.0
qtconsole        : not installed
ipython          : 7.23.1
ipykernel        : 5.5.4
jupyter client   : 6.1.12
jupyter lab      : 3.0.14
nbconvert        : 6.0.7
ipywidgets       : 7.6.3
nbformat         : 5.1.3
traitlets        : 5.0.5

Di mata saya yang tidak ahli, pesan-pesan selama startup tampaknya baik-baik saja:

[I 2021-05-12 10:10:48.065 LabApp] JupyterLab extension loaded from d:\envs\pyfda_38\lib\site-packages\jupyterlab
[I 2021-05-12 10:10:48.065 LabApp] JupyterLab application directory is D:\envs\pyfda_38\share\jupyter\lab
[I 2021-05-12 10:10:48.069 ServerApp] jupyterlab | extension was successfully loaded.
[I 2021-05-12 10:10:48.488 ServerApp] nbclassic | extension was successfully loaded.
[I 2021-05-12 10:10:48.489 ServerApp] Serving notebooks from local directory: D:\Daten\xxx
[I 2021-05-12 10:10:48.489 ServerApp] Jupyter Server 1.6.4 is running at:
[I 2021-05-12 10:10:48.489 ServerApp] http://localhost:8888/lab?token=xxxx

Satu-satunya (mungkin) peringatan relevan yang saya dapatkan adalah

[W 2021-05-12 10:10:55.256 LabApp] Could not determine jupyterlab build status without nodejs 

Apakah saya melakukan sesuatu yang salah atau plot interaktif dengan ipympl belum cukup matang untuk kursus BYOD?

1
Chipmuenk 12 Mei 2021, 12:04

1 menjawab

Jawaban Terbaik

Ini berfungsi ketika mengaktifkan dukungan interaktif matplotlib setiap kali dengan memindahkan perintah ajaib ke sel kedua:

%matplotlib widget
plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()
0
jf_ 12 Mei 2021, 09:31