Подтвердить что ты не робот

Pycharm не показывает сюжет

Pycharm не показывает график из следующего кода:

import pandas as pd
import numpy as np
import matplotlib as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()    
ts.plot()

Случается, что окно появляется меньше секунды, а затем снова исчезает.

Используя Pyzo IEP IDE (используя тот же интерпретатор) в том же коде, график показывает, как ожидалось.

... Поэтому проблема должна быть с некоторой настройкой на Pycharm. Я попытался использовать оба python.exe и pythonw.exe как интерпретатор с одинаковыми результатами.

Это мой sys_info:

C:\pyzo2014a\pythonw.exe -u C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevconsole.py 57315 57316
PyDev console: using IPython 2.1.0import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, 13:02:30) [MSC v.1600 64 bit (AMD64)] on win32
sys.path.extend(['C:\\Users\\Rasmus\\PycharmProjects\\untitled2'])
In[3]: import IPython
print(IPython.sys_info())
{'commit_hash': '681fd77',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': 'C:\\pyzo2014a\\lib\\site-packages\\IPython',
 'ipython_version': '2.1.0',
 'os_name': 'nt',
 'platform': 'Windows-8-6.2.9200',
 'sys_executable': 'C:\\pyzo2014a\\pythonw.exe',
 'sys_platform': 'win32',
 'sys_version': '3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, '
                '13:02:30) [MSC v.1600 64 bit (AMD64)]'}
4b9b3361

Ответ 1

Просто используйте

plt.show()

Это делает трюк, но я не знаю почему.

Ответ 2

Я понимаю, что это старо, но я решила, что проясню заблуждение для других путешественников. Если для параметра plt.pyplot.isinteractive() значение False, график будет отображаться по определенным командам рисования (например, plt.pyplot.show()). Если для plt.pyplot.isinteractive() значение True, каждая pyplot (plt) будет запускать команду рисования (т. plt.pyplot.show()). То, что вы, скорее всего, искали, это plt.pyplot.show() в конце вашей программы для отображения графика.

В качестве примечания вы можете немного сократить эти операторы, используя следующую команду import matplotlib.pyplot as plt а не matplotlib as plt.

Ответ 3

У меня была та же проблема. Проверьте, что plt.isinteractive() имеет значение True. Установка для меня "False" помогла мне.

plt.interactive(False)

Ответ 4

Я пробовал разные решения, но для меня окончательно работал plt.show(block=True). Вам нужно добавить эту команду после команды myDataFrame.plot(), чтобы она вступила в силу. Если у вас есть несколько сюжетов, просто добавьте команду в конец вашего кода. Это позволит вам видеть все данные, которые вы рисуете.

Ответ 5

import matplotlib
matplotlib.use('TkAgg')

Работает для меня. (PyCharm/OSX)

Ответ 6

Я нашел решение. Это сработало для меня:

import numpy as np
import matplotlib.pyplot as plt

points = np.arange(-5, 5, 0.01)
dx, dy = np.meshgrid(points, points)
z = (np.sin(dx)+np.sin(dy))
plt.imshow(z)
plt.colorbar()
plt.title('plot for sin(x)+sin(y)')
plt.show()

Ответ 7

Я тестирую в своей версии Pycharm (Community Edition 2017.2.2), вам может потребоваться объявить как plt.interactive(False), так и plt.show(block = True) следующим образом:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 6.28, 100)

plt.plot(x, x**0.5, label='square root')
plt.plot(x, np.sin(x), label='sinc')

plt.xlabel('x label')
plt.ylabel('y label')

plt.title("test plot")

plt.legend()

plt.show(block=True)
plt.interactive(False)

Ответ 8

Вскоре после вызова

plt.imshow() 

Вызов

plt.show(block = True)

Вы получите всплывающее окно matplotlib с изображением.

Это блокирующий способ. Дальше script не будет работать, пока поп не будет закрыт.

Ответ 9

Со мной проблема заключалась в том, что matplotlib использовал неправильный бэкэнд. Я использую Debian Jessie.

В консоли я сделал следующее:

import matplotlib
matplotlib.get_backend()

В результате получилось: "agg", в то время как это должно быть "TkAgg".

Решение было простым:

  • Удалить matplotlib через pip
  • Установите соответствующие библиотеки: sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  • Установите matplotlib через pip снова.

Ответ 10

Просто добавьте plt.pyplot.show(), это будет хорошо.

Лучшее решение - отключение SciView.

Ответ 11

Я тестировал в своей версии на PyCharm 2017.1.2. Я использовал интерактив (True) и шоу (block = True).

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1//2000',periods=1000))
ts = ts.cumsum()
plt.interactive(True)
ts.plot()
plt.show(block=True)

Ответ 12

Мой env: macOS & anaconda3

Это работает для меня:

matplotlib.use('macosx')

или интерактивный режим:

matplotlib.use('TkAgg')

Ответ 13

Я смог получить комбинацию некоторых других предложений, работающих здесь для меня, но только при переключении plt.interactive(False) в True и обратно.

plt.interactive(True)
plt.pyplot.show()

Это высветит мои заговоры. Затем установка False разрешена для просмотра.

plt.interactive(False)
plt.pyplot.show()

Как уже отмечалось, моя программа не будет выходить, пока все окна не будут закрыты. Вот некоторые подробности о моей текущей среде выполнения:

Python version 2.7.6
Anaconda 1.9.2 (x86_64)
(default, Jan 10 2014, 11:23:15) 
[GCC 4.0.1 (Apple Inc. build 5493)]
Pandas version: 0.13.1

Ответ 14

Комментарий от DanT исправил это для меня, matplotlib с pycharm на linux с поддержкой GTKagg. При импорте matplotlib я получаю следующую ошибку:

>>> import matplotlib as mpl

Backend GTKAgg is interactive backend. Turning interactive mode on.
Failed to enable GUI event loop integration for 'gtk'

При построении примерно так:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(1,2)
plt.show()

Появится экран фигуры, но диаграммы не появятся. с помощью:

plt.show(block=True)

отображает графику правильно.

Ответ 15

В моем случае я хотел сделать следующее:

    plt.bar(range(len(predictors)), scores)
    plt.xticks(range(len(predictors)), predictors, rotation='vertical')
    plt.show()

Следуя сочетанию решений здесь, моим решением было добавить до этого следующие команды:

    matplotlib.get_backend()
    plt.interactive(False)
    plt.figure()

со следующими двумя импортами

   import matplotlib
   import matplotlib.pyplot as plt

Кажется, что все команды необходимы в моем случае, с MBP с ElCapitan и PyCharm 2016.2.3. Привет!

Ответ 17

В неинтерактивном окружении мы должны использовать plt.show(block = True)

Ответ 18

Ничто из вышеперечисленного не сработало для меня, но следующее сработало:

  1. Снимите флажок (Показать графики в окне инструментов) в settings > Tools > Python Scientific Pycharm settings > Tools > Python Scientific.
  2. Я получил ошибку. No PyQt5 module found. PyQt5 установку PyQt5 используя:

    sudo apt-get install python3-pyqt5
    

Ответ 19

Одно свойство нужно установить для pycharm.

import matplotlib.pyplot as plt

plt.interactive(False)  #need to set to False

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

plt.show()

Ответ 20

plt.show() в конце концов работает.

Ответ 21

Изменить импорт на:

import matplotlib.pyplot as plt

или используйте эту строку:

plt.pyplot.show()

Ответ 22

Для тех, кто запускает сценарий в среде IDE (и не работает в интерактивной среде, такой как консоль Python или ноутбук), я обнаружил, что это наиболее интуитивное и простое решение:

plt.imshow(img)
plt.waitforbuttonpress()

Он показывает рисунок и ждет, пока пользователь не нажмет на новое окно. Только тогда он возобновляет работу сценария и запускает остальную часть кода.

Ответ 23

Я использую Ubuntu, и я попытался, как сказал @Arie выше, но с этой строкой только в терминале:

sudo apt-get install tcl-dev tk-dev python-tk python3-tk

И это сработало!

Ответ 24

В Pycharm время от времени Matplotlib.plot не будет отображаться.

Поэтому после вызова plt.show() проверьте на правой боковой панели инструментов SciView. Внутри SciView все сгенерированные графики будут сохранены.