%matplotlib - строковая магия вызывает SyntaxError в Python-скрипте
Описание проблемы на StackOverflow
Я пытаюсь запустить следующий код в Spyder (Python 2.7.11):
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import tensorflow as tf
# настройки
LEARNING_RATE = 1e-4
# нужно установить 20000 в локальной среде, чтобы получить 0.99 точность
TRAINING_ITERATIONS = 2000
DROPOUT = 0.5
BATCH_SIZE = 50
# установить в 0, чтобы тренироваться на всех доступных данных
VALIDATION_SIZE = 2000
# номер изображения для отображения
IMAGE_TO_DISPLAY = 10
Но я получил следующую ошибку:
line 10
%matplotlib inline
^
SyntaxError: invalid syntax.
Хотелось бы получить объяснение данной ошибки.
P.S. Код взят из проекта соревнования на Kaggle: Digit Recognizer.
3 ответ(ов)
Поскольку line magics поддерживаются только в командной строке IPython и не поддерживаются в обычном Python CLI, используйте: 'exec(%matplotlib inline)'
вместо %matplotlib inline
.
Если вы добавите следующий код в начало вашего скрипта, matplotlib
будет работать в режиме inline в окружении IPython
(например, в Jupyter или плагине Hydrogen для Atom), и это будет также работать, если вы запустите скрипт напрямую из командной строки (в этом случае matplotlib
не будет работать в режиме inline, и графики откроются в всплывающих окнах, как обычно).
from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
ipy.run_line_magic('matplotlib', 'inline')
Таким образом, этот код проверяет, есть ли активная сессия IPython, и если да, то включает режим inline для визуализации графиков. Если же скрипт запускается из терминала, графики будут отображаться в отдельных окнах.
В случае, если вы используете Julia, аналог команды %matplotlib из IPython — это пакет PyPlot, который предоставляет интерфейс Julia к Matplotlib, включая встроенные графики в пьесах IJulia. (Аналог numpy по умолчанию уже загружен в Julia.)
С учетом PyPlot аналог команды %matplotlib inline — это просто использование PyPlot, так как PyPlot по умолчанию генерирует встроенные графики в IJulia.
Как сделать графики Matplotlib отображаемыми внутри IPython-ноутбука?
Сохранить график в файл изображения вместо его отображения
Построение графиков с логарифмическими осями
Matplotlib: сохранение графика с легендой вне области построения
Цветовой график 2D массива в matplotlib