"UserWarning: Matplotlib в настоящее время использует agg, который не является GUI, поэтому не может показать рисунок". при нанесении фигуры с пиплота на Пичарм

Я пытаюсь построить простой график, используя pyplot, например:

import matplotlib.pyplot as plt
plt.plot([1,2,3],[5,7,4])
plt.show()

но фигура не появляется и я получаю следующее сообщение:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

В нескольких местах я видел, что нужно изменить конфигурацию matplotlib, используя следующее:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

Я сделал это, но затем получил сообщение об ошибке, потому что он не может найти модуль:

ModuleNotFoundError: No module named 'tkinter'

Затем я попытался установить "tkinter" с помощью pip install tkinter (внутри виртуальной среды), но он не нашел его:

Collecting tkinter
  Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter

Я должен также упомянуть, что я все это выполняю в IDE Pycharm Community Edition, используя виртуальную среду, и что моя операционная система - Linux/Ubuntu 18.04.

Я хотел бы знать, как я могу решить эту проблему, чтобы иметь возможность отображать график.

Ответ 1

Я нашел решение моей проблемы (благодаря помощи ImportanceOfBeingErnest).

Все, что мне нужно было сделать, это установить tkinter через терминал Linux bash, используя следующую команду:

sudo apt-get install python3-tk

вместо того, чтобы устанавливать его с помощью pip или непосредственно в витальной среде в Pycharm.

Ответ 2

Попробуйте import tkinter потому что pycharm уже установил для вас tkinter, я посмотрел Install tkinter for Python

Вы можете попробовать:

import tkinter
import matplotlib
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()

как способ установки tkinter

Я попробовал ваш путь, кажется, нет ошибок для запуска на моем компьютере, он успешно показывает цифру. возможно, потому что у pycharm есть tkinter как системный пакет, поэтому вам не нужно его устанавливать. Но если вы не можете найти tkinter внутри, вы можете перейти к Tkdocs, чтобы узнать, как установить tkinter, как упоминается, tkinter - основной пакет для python.

Ответ 3

В моем случае сообщение об ошибке означало, что я работал в безголовой консоли. Так что plt.show() не мог работать. То, что сработало, было:

import matplotlib.pyplot as plt

plt.plot([1,2,3],[5,7,4])
plt.savefig("mygraph.png")

Я нашел ответ в хранилище github.