Я пытаюсь построить простой график с помощью 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.
Я хотел бы знать, как я могу решить эту проблему, чтобы иметь возможность отображать график.
Вы на самом деле используете tkinter для чего-либо или просто выбрали его в качестве бэкэнда plt?
@ImportanceOfBeingErnest: Спасибо за подсказку. Я действительно сначала сосредоточусь на установке tkinter. Я посмотрю на ссылку, которую вы предоставили, и посмотрю, смогу ли я что-нибудь сделать из нее.
@ G.Anderson: я понятия не имел, что такое tkinter, пока не столкнулся с этой ошибкой с matplotlib. Теперь я пытаюсь установить его только для того, чтобы иметь возможность показывать графики (так что да, я думаю, я просто выбрал его в качестве бэкэнда plt). Если вы знаете какой-то другой способ (т.е. без использования tkinter), буду рад услышать.
Есть ряд бэкендов, которые вы можете использовать. Здесь — это ответ о циклическом переходе между бэкендами, пока вы не найдете тот, который работает с вашей установкой.
@ImportanceOfBeingErnest: Большое спасибо за помощь. Я установил tkinter в терминал bash с помощью apt-get install python3-tk (по ссылке, которую вы мне прислали), и, похоже, это сработало, так как теперь я могу отображать графики. Также мне не нужно импортировать tkinter в мой скрипт.
@G.Anderson: я запустил скрипт, чтобы просмотреть различные бэкэнды. Получается, что доступен только TkAgg! Действительно, я только что установил его перед тестированием скрипта.
Современные версии matplotlib будут автоматически переключаться между доступными наборами инструментов; поэтому, если tkinter не установлен (и ни одна из других опций не установлена), он вернется к бэкэнду agg.
В Arch Linux проблема pacman -S --needed python-pyqt5 устранена.
Я столкнулся с похожей проблемой, и мне удалось использовать что-нибудь ноTcl/Tk с python, как сообщается здесь. IMO должен быть способ загрузить Tcl/Tk как внешнюю DLL и использовать tkinter в качестве псевдонима.






Попробуйте import tkinter, потому что pycharm уже установил для вас tkinter, я посмотрел Установите tkinter для Python
Возможно, вы можете попробовать:
import tkinter
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()
как способ установки tkinter
Попробовал ваш способ, вроде без ошибок запускал на компе, успешно показывает цифру. возможно, потому что у pycharm есть tkinter в качестве системного пакета, поэтому вам не нужно его устанавливать. Но если вы не можете найти tkinter внутри, вы можете перейти к Tkdocs, чтобы узнать, как установить tkinter, поскольку там упоминается, что tkinter — это основной пакет для python.
Спасибо за ваше предложение. К сожалению, это не работает (ModuleNotFoundError: No module named 'tkinter'). Я попробую установить tkinter другим способом.
Я также столкнулся с той же проблемой ... Я использую Linux, поэтому я использовал эту команду для установки tkinter sudo apt-get install python3-tk
tkЯ нашел решение своей проблемы (благодаря помощи ВажностьБыть Эрнестом).
Все, что мне нужно было сделать, это установить tkinter через терминал bash Linux, используя следующую команду:
sudo apt-get install python3-tk
вместо установки с помощью pip или непосредственно в виртуальной среде в Pycharm.
matplotlib поддерживаемых бэкендов с графическим интерфейсомTkAggQt5Agg, GTKAgg, Qt4Agg и т. д.
pip install pyqt5 также решит проблемуПРИМЕЧАНИЕ:
matplotlib сделали программное обеспечение pypi не зависящим от какого-либо бэкэнда с графическим интерфейсом, потому что некоторые люди нужноmatplotlib не имеют бэкенда с графическим интерфейсом.На самом деле, я также понял, что, поскольку я установил tkinter, мне больше не нужно добавлять первые две строки моего кода (import matplotlib и matplotlib.use('TkAgg'))
Для полноты картины в OpenSuse Leap пакет, который мне пришлось установить, называется python3-matplotlib-tk.
В этом ответе, вероятно, может быть упомянуто, что tkinter зависит от версии Python в том смысле, что эта конкретная команда установит tkinter исключительно для вашей версии Python по умолчанию. Предположим, у вас установлены разные версии Python для разных виртуальных окружений. В этом случае вам нужно будет установить его для нужной версии Python, используемой в этом рабочем venv. Например, в моем случае: sudo apt-get install python3.7-tk. Незнание этого заставило меня потратить разумное количество времени на получение ошибок имени модуля «tkinter», даже после его установки для моей глобальной версии Python.
Мне пришлось установить терминал Linux Bash на свой компьютер, чтобы запустить эту команду. И это сработало! См. Howtogeek.com/249966/…
Или используйте sudo apt-get install python3.8-tk, если ваша версия Python 3.8.
matplotlib.use('TkAgg') подарил [Previous line repeated 987 more times] RecursionError: maximum recursion depth exceeded для меня. Я «исправил» это, запустив новую консоль Python (в PyCharm).
Для Fedora: sudo dnf установить python3-tkinter
Пип, как установить tkinter? в результатах поиска нет соответствующего элемента.
Для меня «pip install tk» не сработал (я использую Windows 10). Что сработало, так это переустановка pythin через загруженный исполняемый файл с опцией «Изменить», а затем установка флажка «tcl/tk и IDLE».
В моем случае сообщение об ошибке подразумевало, что я работаю в безголовой консоли. Так что plt.show() не может работать. Что сработало, так это вызвать plt.savefig:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [5, 7, 4])
plt.savefig("mygraph.png")
Я нашел ответ на репозиторий github.
На самом деле это не решает основной проблемы, но в моем случае это предпочтительное решение, поскольку лучше сохранить изображение, чем показывать его, и это часто бывает.
Если вы используете Arch Linux (например, Manjaro или Antegros), просто введите:
sudo pacman -S tk
И все будет работать отлично!
Боюсь сказать, что я здесь уже в третий раз. Возможно, прокомментировав это, у меня будет больше шансов вспомнить «трюк» в следующий раз, когда я попробую это снова...
У меня тоже была эта проблема в PyCharm. Эта проблема связана с тем, что на вашем компьютере нет модуля tkinter.
Для установки следуйте инструкциям ниже (выберите подходящую ОС)
Для пользователей убунту
sudo apt-get install python-tk
или
sudo apt-get install python3-tk
Для пользователей Центос
sudo yum install python-tkinter
или
sudo yum install python3-tkinter
для пользователей Arch
sudo pacman -S tk
или
sudo pamac install tk
Для Windows используйте pip для установки tk
После установки tkinter перезапустите Pycharm и запустите свой код, он будет работать.
Linux Mint 19. Мне помогло:
sudo apt install tk-dev
P.S. Перекомпилируйте интерпретатор Python после установки пакета.
На всякий случай, если это кому-нибудь поможет.
Версия Python: 3.7.7 платформа: Ubuntu 18.04.4 LTS
Это пришло с версией Python 3.6.9 по умолчанию, однако я установил на него свой собственный Python версии 3.7.7 (установил сборку из исходного кода)
tkinter не работал, даже когда help('module') показывает tkinter в списке.
Следующие шаги работали для меня:
sudo apt-get install tk-dev.пересобрать питон: 1. Перейдите в папку python и запустите проверки:
cd Python-3.7.7
sudo ./configure --enable-optimizations
sudo make -j 8 --- здесь 8 - количество процессоров, проверьте свой с помощью команды nproc.Установка с помощью:
sudo make altinstall
Не используйте sudo make install, он перезапишет версию 3.6.9 по умолчанию, которая позже может быть грязной.
python3.7 -m tkinter
Появится окно Windows, ваш tkinter готов.
После обновления множества пакетов (Spyder с 3 по 4, Keras и Tensorflow и множества их зависимостей) сегодня у меня возникла та же проблема! Я не могу понять, что произошло; но виртуальная среда (на основе conda), которая продолжала использовать Spyder 3, не имела проблем. Хотя установка tkinter или изменение серверной части, via matplotlib.use('TkAgg), как показано выше, или этот хороший пост на как изменить бэкенд вполне могут решить проблему, я не считаю это жестким решением. Для меня удаление matplotlib и переустановка было волшебством, и проблема была решена.
pip uninstall matplotlib
... затем установите
pip install matplotlib
Судя по всему вышесказанному, это может быть проблема управления пакетами, и, кстати, я использую как conda, так и pip, когда это возможно.
Когда я столкнулся с этой ошибкой в Spyder, я перешел от запуска кода построчно к выделению блока графического кода и запуску всего сразу. Вуаля, изображение появилось.
Вы можете изменить matplotlib с помощью бэкэнда, используя команду from agg to Tkinter TKAgg с помощью команды
matplotlib.use('TKAgg',warn=False, force=True)
Это было очень полезно из-за того, что мне не пришлось перезагружать интерактивную консоль ipython, лол. Спасибо
Простая установка
pip3 install PyQt5==5.9.2
Меня устраивает.
Да, это работает! Я установил его в свою виртуальную среду через терминал PyCharm.
Я выполняю «pip3 install PyQt5» без указания номера версии.
Это единственный ответ, который решил мою проблему
Не знаю, как это не одобрено. Только этот способ сработал
Я добавил %matplotlib inline
и мой график появился в Jupyter Notebook.
Комментарий @xicocaio следует выделить.
tkinter зависит от версии Python в том смысле, что sudo apt-get install python3-tk установит tkinter исключительно для вашей версии Python по умолчанию. Предположим, у вас есть разные версии Python в разных виртуальных средах, вам нужно будет установить tkinter для нужной версии Python, используемой в этой виртуальной среде. Например, sudo apt-get install python3.7-tk. Невыполнение этого требования все равно приведет к ошибкам No module named ' tkinter', даже после установки для глобальной версии Python.
Это работало с R reticulate. Нашел здесь.
1: matplotlib.use( 'tkagg' )
или
2: matplotlib$use( 'tkagg' )
Например:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
import matplotlib
matplotlib.use( 'tkagg' )
style.use("ggplot")
from sklearn import svm
x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]
plt.scatter(x,y)
plt.show()
issue = «UserWarning: Matplotlib в настоящее время использует agg, который не является бэкэндом с графическим интерфейсом, поэтому не может показать рисунок».
И это сработало для меня
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Qt5Agg')
Работал у меня на Ubuntu 16.04, PyCharm Prof
Я думаю, что это на самом деле правильное решение, потому что это самое простое. Нужно только установить его там, где это необходимо, например. запустив: pip3 установить PyQt5
Я установил python3-tk на Ubuntu 20.04 и с помощью WSL2.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use( 'tkagg')
а затем я установил GWSL из Магазина Windows, который, кажется, решает проблему рендеринга WSL2 из коробки.
Я решил это, поставив matplotlib.use('TkAgg') после всех операторов импорта.
Я использую Python 3.8.5 VSCODE и Anaconda.
Никакие другие трюки не сработали.
Если вы устанавливаете версии Python с помощью пиенв в системах на основе Debian, обязательно запустите sudo apt install tk-dev перед pyenv install. Если он уже установлен, удалите его с помощью pyenv uninstall и установите снова после установки tk-dev. Поэтому нет необходимости устанавливать какие-либо переменные env при запуске pyenv install.
Работает, если вы используете сторонний код в своем проекте. Вероятно, он содержит следующую строку
matplotlib.use('Agg')
Найдите его и прокомментируйте.
Если вы понятия не имеете, что это такое, вы, вероятно, не используете эту часть кода.
Решения об использовании другого внутреннего графического интерфейса могут быть чище, поэтому выбирайте своего бойца.
Ответ давался несколько раз, но он не очевиден, нужно установить графику, это работает.
pip3 install PyQt5
Это работало при запуске двоичного файла Python через Bazel. +1
Если вы используете блокнот Jupyter, попробуйте следующее:
%matplotlib inline
Это должно отображать сюжет, даже если не указано
plt.show()
команда.
Решение, которое сработало для меня:
Установить ткинтер
импортировать tkinter в модуль
убедитесь, что matplotlib использует (TkAgg) вместо (Agg)
matplotlib.use('TkAgg')
Остерегайтесь порядка импорта в вашем коде, я провел целый день, просматривая эти ответы, и в итоге решил проблему, импортировав bt перед чем-либо еще, а затем используя оператор .use('TkAgg') (по какой-то причине импорт bt изменяет бэкэнд matplotlib на «Agg» )
выполните следующую команду перед построением графика
%matplotlib inline
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Другой вариант — установить Анаконда. Это полезное программное обеспечение, в котором вы можете создавать множество сред, и в нем уже установлено множество библиотек для обработки данных и машинного обучения.
--Редактировать --
Вот шаги, которые помогут мне решить вашу же проблему:

В этом разделе вы можете создать множество env по своему усмотрению, т.е. у меня есть 2 env, один для моей основной базы (root), один для последней версии python.
Шаг 3: создав py env в этом разделе, Anaconda автоматически установит основные библиотеки, используемые разработчиками, уменьшая риск появления ошибок в вашем коде.
Дополнительное рассмотрение: как вы можете видеть на снимке ниже, вы можете легко увидеть, какие библиотеки вы установили в свой conda. Я получил ту же ошибку, что и вы, потому что я пропустил одну из этих 3 библиотек

Надежда была полезной и понятной! Циа
Это не дает ответа на вопрос. Как только у вас будет достаточно репутация, вы сможете комментировать любой пост; вместо этого давать ответы, не требующие пояснений от спрашивающего. - Из обзора
Сэр, вопрос: он не смог правильно увидеть диаграмму. О: Установив программное обеспечение, вы сможете решить эту проблему. У меня была такая же проблема, и именно так я исправил ее на своем личном опыте. Спасибо.
Затем, пожалуйста, редактировать, чтобы добавить больше деталей и шагов к вашему ответу, который в основном «установить анаконду». Установка Anaconda — только 1-й шаг. Как это решает проблему с matplotlib и tkinter? Как они устанавливают другие пакеты? Какие конкретные команды им нужно выполнить? Не хватает некоторых деталей, чтобы сделать его полным ответом.
Для Windows 10, если использование pip install tk не работает для вас, попробуйте:
Источник моего исправления: https://stackoverflow.com/a/59970646/2506354
Это была именно та проблема, которая у меня была. Повторная загрузка установщика Python для Windows и добавление его в установку Python с помощью модификации (после обновления). Никакого повторного создания virtualenvs не требовалось.
Бег %matplotlib встроенный Однажды решил проблему для меня. Я нашел ответ здесь: Когда я использую matplotlib в блокноте jupyter, он всегда вызывает ошибку «matplotlib в настоящее время использует серверную часть без графического интерфейса»? от пользователя Mulugeta Weldezgina
adding %matplotlib inline while importing helps for smooth plots in notebook
%matplotlib inline
import matplotlib.pyplot as plt
%matplotlib inline sets the backend of matplotlib to the 'inline' backend: With this backend, the output of plotting commands is displayed inline within frontends like the Jupyter notebook, directly below the code cell that produced it. The resulting plots will then also be stored in the notebook document.
Моя проблема началась после того, как я использовал pandas_profile (или что-то в этом роде), и запуск %matplotlib inline однажды исправил фон от безголового и т. д.
Это решит проблему. Это хорошо работает в юпитере.
%matplotlib inline
Это уже упоминалось в этот ответ и этот ответ. Нет необходимости повторять существующие ответы. Как только у вас будет достаточно репутации, вы можете вместо этого проголосовать за них.
Пытаться:
%matplotlib inline
У меня была такая же проблема, и это сработало для меня. Я тестировал его на своих ноутбуках Jupyter и коде Visual Studio, так что у вас не должно возникнуть проблем.
В Mac OS я заставил его работать с:
import matplotlib
matplotlib.use('MacOSX')
Ни один из этих ответов не помог мне с использованием Pycharm Professional edition 2021.3.
Обычные графики matplotlib действительно работали в научном представлении, но не позволяли мне добавлять изображения на графики.
Что сработало для меня, так это добавить эту строку, прежде чем я попытаюсь что-либо построить:
plt.switch_backend('TkAgg')
Убедитесь, что ваш X-сервер работает. Matplotlib указывает на эту ошибку, если он не может подключиться к X-дисплею.
Обратите внимание на брандмауэр Windows! Я перешел с WSL Debian на Ubuntu и не помнил о правиле брандмауэра. Я использую эта почта для настройки правила брандмауэра Windows, чтобы X-сервер работал. Этот метод позволяет избежать слишком либерального правила, позволяющего любому использовать ваш X-сервер.
Он сказал:
If you already had installed an X11 server, Windows may have created firewall rules that will mess with the above configuration. Search for them and delete them in "Windows Defender Firewall with Advanced Security."
You will now need to configure Windows Firewall to permit connections from WSL2 to the X11 display server. You will install the display server in the next step. We do this step first to avoid Windows Firewall from auto-creating an insecure firewall rule when you run the X11 display server. Many guides on X11 forwarding and WSL2 make this firewall rule too permissive, allowing connections from any computer to your computer. This means someone could theoretically, if they are on your same network, start sending graphical display information to your computer.
To avoid this, we will make Windows Firewall only accept internet traffic from the WSL2 instance.
To set this up, you can copy the below to a script and run it from within WSL2:
#!/bin/sh LINUX_IP=$(ip addr | awk '/inet / && !/127.0.0.1/ {split($2,a,"/"); print a[1]}') WINDOWS_IP=$(ip route | awk '/^default/ {print $3}') # Elevate to administrator status then run netsh to add firewall rule powershell.exe -Command "Start-Process netsh.exe -ArgumentList \"advfirewall firewall add rule name=X11-Forwarding dir=in action=allow program=%ProgramFiles%\VcXsrv\vcxsrv.exe localip=$WINDOWS_IP remoteip=$LINUX_IP localport=6000 protocol=tcp\" -Verb RunAs"
Ручной метод:
Alternatively, you can manually add the rule through a GUI by doing the following:
- Open "Windows Defender Firewall with Advanced Security"
- Click add new rule brings up the New Rule Wizard (next to navigate between each section):
- Rule type: Custom
- Program: "This program path:" %ProgramFiles%\VcXsrv\vcxsrv.exe
- Protocol and ports
- Protocol type: TCP
- Local port: 6000
- Remote port: any
- Scope
- Local IP address: Obtain the IP address to put in by running the below command in WSL2
ip route | awk '/^default/ {print $3}'- remote IP addresses
- Obtain IP address to enter by running the below in WSL2
ip addr | awk '/inet / && !/127.0.0.1/ {split($2,a,"/"); print a[1]}'- Action: "Allow the connection
- Profile: Selection Domain, Private, and Public
- Name: "X11 forwarding"
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из обзора
Настройка командной строки Ubuntu 20.04. Я устанавливаю следующее, чтобы Matplotlib перестал выдавать ошибку UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
Я установил python-tk по шагам:
apt-get update
apt-get install python3.8-tk
Забудьте на мгновение о графике. Ваша проблема заключается в установке tkinter. Вы пробовали какое-либо из доступных решений для этого, например. stackoverflow.com/questions/4783810/install-tkinter-for-pythна ?