Как рисовать графику при выполнении скрипта Python в Jupyter Notebook из другого скрипта Python - PullRequest
0 голосов
/ 05 апреля 2019

Я бы хотел перенаправить вывод скрипта Python в блокнот Jupyter из кода.

Я нашел библиотеки nbformat и nbconvert, которые могут генерировать и выполнять файлы .ipynb, поэтому я просто хотел запустить команду "% run script.py".

Это мой скрипт для запуска:

import numpy as np
import matplotlib.pyplot as plt
def f(x):
    return np.exp(x)
x = np.linspace(-1, 3, 100)
print(x)
plt.plot(x, f(x))

Генерация .ipynb:

import nbformat as nbf
nb = nbf.v4.new_notebook()
code = """%run -i temp.py"""
nb['cells'] = [nbf.v4.new_code_cell(code)]
fname = 'test.ipynb'
with open(fname, 'w') as f:
    nbf.write(nb, f)

Выполнение .ipynb:

import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
from nbconvert.preprocessors import CellExecutionError
with open("test.ipynb") as f:
    nb = nbformat.read(f, as_version=4)
ep = ExecutePreprocessor(timeout=6000, kernel_name='python3')
out = ep.preprocess(nb, {'metadata': {'path': '.'}})
with open('executed_notebook.ipynb', mode='wt') as f:
    nbformat.write(nb, f)

Весь текстовый вывод сгенерирован, но, к сожалению, графика там не отображалась. Это файл .ipynb:

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1.         -0.95959596 -0.91919192 -0.87878788 -0.83838384 -0.7979798\n",
      " -0.75757576 -0.71717172 -0.67676768 -0.63636364 -0.5959596  -0.55555556\n",
      " -0.51515152 -0.47474747 -0.43434343 -0.39393939 -0.35353535 -0.31313131\n",
      " -0.27272727 -0.23232323 -0.19191919 -0.15151515 -0.11111111 -0.07070707\n",
      " -0.03030303  0.01010101  0.05050505  0.09090909  0.13131313  0.17171717\n",
      "  0.21212121  0.25252525  0.29292929  0.33333333  0.37373737  0.41414141\n",
      "  0.45454545  0.49494949  0.53535354  0.57575758  0.61616162  0.65656566\n",
      "  0.6969697   0.73737374  0.77777778  0.81818182  0.85858586  0.8989899\n",
      "  0.93939394  0.97979798  1.02020202  1.06060606  1.1010101   1.14141414\n",
      "  1.18181818  1.22222222  1.26262626  1.3030303   1.34343434  1.38383838\n",
      "  1.42424242  1.46464646  1.50505051  1.54545455  1.58585859  1.62626263\n",
      "  1.66666667  1.70707071  1.74747475  1.78787879  1.82828283  1.86868687\n",
      "  1.90909091  1.94949495  1.98989899  2.03030303  2.07070707  2.11111111\n",
      "  2.15151515  2.19191919  2.23232323  2.27272727  2.31313131  2.35353535\n",
      "  2.39393939  2.43434343  2.47474747  2.51515152  2.55555556  2.5959596\n",
      "  2.63636364  2.67676768  2.71717172  2.75757576  2.7979798   2.83838384\n",
      "  2.87878788  2.91919192  2.95959596  3.        ]\n"
     ]
    }
   ],
   "source": [
    "%run -i temp.py"
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 2
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...