Я Python захватывает RichOutput из InteractiveShell - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь создать консоль I Python в качестве учебного проекта и работаю с InteractiveShell из I Python для выполнения ячеек. Тем не менее, я не могу получить выходные данные из графиков Matplotlib для работы. Все, что я получаю от io.capture_output, это {'text/plain': '<Figure size 640x480 with 1 Axes>'} вместо image / png или другого подходящего MIME-типа.

from IPython.core.interactiveshell import InteractiveShell
from IPython.utils import io
import matplotlib
from IPython import get_ipython
matplotlib.use('module://ipykernel.pylab.backend_inline')

def test():
    ip = get_ipython()

    with io.capture_output() as captured:
        result = ip.run_cell(
'''import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, np.pi, 0.01)
s = np.sin(np.pi*t)
plt.plot(t, s)
plt.show()''')
    for out in captured.outputs:
        print(out.data)

if __name__ == '__main__':
    InteractiveShell().instance()
    test()

Я использую модуль backend_inline для Matplotlib, и если он опущен, он вообще ничего не выводит.

Это аналогичный поток здесь , который утверждает, что решил проблема, но я пока не могу написать комментарии, но они не используют backend_inline в своем решении.

Есть ли какой-нибудь способ получить данные из графика, чтобы затем отобразить их?

...