использование matplotlib с консолью ipython (spyder) завершается неудачно - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь запустить следующий код в Spyder (который использует консоль IPython):

import numpy as np
import matplotlib as plt

labels = ['python\nloop', 'numpy\nbroadc.', 'sklearn', 'fortran/\nf2py', 'scipy', 'cython', 'numba']
timings = [13.4, 0.111, 0.0356, 0.0167, 0.0129, 0.00987, 0.00912]
x = np.arange(len(labels))

ax = plt.axes(xticks=x, yscale='log')
ax.bar(x - 0.3, timings, width=0.6, alpha=0.4, bottom=1E-6)
ax.grid()
ax.set_xlim(-0.5, len(labels) - 0.5)
ax.set_ylim(1E-3, 1E2)
ax.xaxis.set_major_formatter(plt.FuncFormatter(lambda i, loc: labels[int(i)]))
ax.set_ylabel('time (s)')
ax.set_title("Pairwise Distance Timings")

Однако я получаю следующую ошибку:

Traceback (most recent call last):

  File "<ipython-input-1-46193480d26c>", line 1, in <module>
    runfile('C:/Users/owner/.spyder-py3/temp.py', wdir='C:/Users/owner/.spyder-py3')

  File "C:\Users\owner\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\owner\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/owner/.spyder-py3/temp.py", line 9, in <module>
    ax = plt.axes(xticks=x, yscale='log')

TypeError: 'module' object is not callable

Ячто-то упустил?Насколько я знаю, этот код отлично работает в IDLE, однако я не смог установить NumPy с PIP, поэтому я выбрал простой маршрут и установил Anaconda.

1 Ответ

0 голосов
/ 29 мая 2018

Вы, кажется, используете модуль pyplot в matplotlib (это то, что обычно обозначает plt).Он должен быть импортирован как:

import matplotlib.pyplot as plt

Если я изменю эту строку, ваш код прекрасно работает для меня:)

...