当前位置: 首页 > 知识库问答 >
问题:

不能使用matplotlib.use('Agg'),图形总是显示在屏幕上

高鸿振
2023-03-14

我正在学习matplotlib,不知道如何保存图形而不在屏幕上打印。

所以我在网上做了一些研究,许多答案说解决方案是matplotlib.use(“Agg”)。而且必须在导入matplotlib.pyplot或pylab之前。

然后,当我在脚本的第一行添加它时,它根本不起作用。

import matplotlib
matplotlib.use('Agg') 
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

E:\Program Files\Anaconda3\lib\site-packages\matplotlib\__init__.py:1401: UserWarning:  This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)

我使用Anaconda Spyder,所以我重新启动了内核并再次运行了脚本,我得到了相同的错误信息。

然后我再次重启内核,直接在控制台中键入如下代码:

In[1]: import matplotlib as mpl

In[2]: mpl.use('Agg')

E:\Program Files\Anaconda3\lib\site-packages\matplotlib\__init__.py:1401: UserWarning:  This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)

此外,如果我删除脚本末尾的plt.show()或添加plt.ioff(),图形将始终打印在屏幕上。

谢谢大家的回答。现在我有两个解决方案:

>

  • 只需使用plt.close(),这不会改变后端,图也不会显示。

    使用plt。切换后端(“Agg”),这会将后端切换为“Agg”,并且屏幕上不会打印任何图形。

  • 共有3个答案

    匡凌
    2023-03-14

    plt.plot(x, y)plt.savefig('path/figure_filename.jpg', dpi=300)

    蒋泰
    2023-03-14

    你最初问题的答案很简单。如果你不想在屏幕上显示图表,就不要使用plt.show()所以你要做的就是:

    import matplotlib.pylab as plt    
    plt.plot(x,y) #whatever the x, y data be
    #plt.show()  """Important: either comment this line or delete it"""
    plt.savefig('path/where/you/want/to/save/filename.ext') 
    #'filename' is either a new file or an already existing one which will get overwritten at the time of execution. 'ext' can be any valid image format including jpg, png, pdf, etc.
    
    赵正雅
    2023-03-14

    您可以尝试切换后端。显然,Spyder会在您加载matplotlib之前加载,而use没有任何效果。这可能会有帮助:如何在matplotlib/Python中切换后端

     类似资料:
    • 我一直在努力跟进https://github.com/airbnb/react-native-maps教程我尝试了他们说的一切,但在我的android studio模拟器上得到了一个空白屏幕。 我的代码: AndroidManifest。xml文件:

    • 我试图用pyplot绘制一个简单的图,例如: 但该图没有出现,我得到以下消息: 我在几个地方看到,必须使用以下方法更改matplotlib的配置: 我这样做了,但随后得到一个错误消息,因为它找不到模块: 然后,我尝试使用 (在虚拟环境中)安装“tkinter”,但它没有找到它: 我还应该提到,我正在使用虚拟环境在Pycharm Community Edition IDE上运行所有这些,并且我的操作

    • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。

    • 试图制作一个简单的应用程序,从服务器获取JSON数据,并在自定义列表中显示它们,非常简单的事情。 但当我运行应用程序时,它显示的是白色空白屏幕,但没有数据。它也没有显示任何错误,我假设如果有任何错误,它不会在我的手机中运行。但不显示获取的数据。 下面是类 我发现的其他问题与我的问题不匹配,否则不会添加这个问题。

    • 我正在尝试在Android上显示谷歌地图。当我加载活动时,我会看到一个灰色屏幕,左下角显示的是Google徽标。使用虚拟仿真器和真实设备也会发生这种情况。我试过使用不同的Api键,但得到同样的问题。我正在使用Android Studio提供的地图活动。 Build.Gradle(模块:应用程序) AndroidManifest.xml Logcat处于错误模式