当前位置: 首页 > news >正文

【Python小技巧】matplotlib不显示图像竟是numpy惹的祸

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、问题:df.plot() 显示不出图像
  • 二、尝试各种解决办法
    • 1. 增加matplotlib.use,设定GUI
    • 2. 升级matplotlib版本
  • 三、numpy是个重要的库
    • 1. 检查numpy版本
    • 2. 查看可用版本
    • 3. 卸载老版本,安装最新版本
    • 4. 既然2.x版本的不行,再换下1.x版本
  • 总结


前言

Python3.10 使用matplotlib绘图,显示不出图像。首先排除代码的问题,因为使用Python3.8的虚拟环境显示是OK的,换到Python3.10却不行。为什么,折腾了好久,终于让我找到原因了。

这里分享一下,希望可以帮助到大家。


一、问题:df.plot() 显示不出图像

import numpy as np
import pandas as pd
pd.options.mode.copy_on_write = True
import matplotlib.pyplot as plt
from Ashare import *def plot_draw_kline(code):df = get_price(code,frequency='1d',count=500)df['date'] = df.indexdf.plot(x='date', y=['close'], grid=True)plt.show()if __name__ == '__main__':code = 'sz000099'plot_draw_kline(code)

运行完,什么图也没渲染出来,可以看见Figer窗口,但一闪而过就结束了。

二、尝试各种解决办法

1. 增加matplotlib.use,设定GUI

使用matplotlib时经常发生plt.show()之后不显示图像的情况,查网上说,是没有后台gui所致。print(matplotlib.get_backend()) 后发现后台QtAgg,在代码中添加以下3行代码。

import matplotlib
print(matplotlib.get_backend())
matplotlib.use('QtAgg')

修改后如下:

import numpy as np
import pandas as pd
pd.options.mode.copy_on_write = True
import matplotlib
print(matplotlib.get_backend())
matplotlib.use('QtAgg')
import matplotlib.pyplot as plt
from Ashare import *def plot_draw_kline(code):df = get_price(code,frequency='1d',count=500)df['date'] = df.indexdf.plot(x='date', y=['close'], grid=True)plt.show()if __name__ == '__main__':code = 'sz000099'plot_draw_kline(code)

可修改完,问题依旧…

2. 升级matplotlib版本

其次想到的是更新matplotlib ,将从matplotlib-3.7.0版本更新到matplotlib-3.8.4。

pip install matplotlib -U -i http://pypi.douban.com/simple

升级完,问题依旧…

实在不行,卸载了重新安装。

pip uninstall matplotlib
pip install matplotlib -i http://pypi.douban.com/simple

问题依旧。

三、numpy是个重要的库

安装matplotlib 默认会顺带安装numpy,会不会numpy版本的问题?

1. 检查numpy版本

pip show numpy查看版本为1.24.3。

(base) C:\Users\Administrator>pip show numpy
Name: numpy
Version: 1.24.3

2. 查看可用版本

使用命令pip install numpy==1000 ,故意输入一个不存在的版本,会显示所有可用版本。

(base) C:\Users\Administrator>pip install numpy==1000
ERROR: Could not find a version that satisfies the requirement numpy==1000 (from versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.3, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.19.5, 1.20.0, 1.20.1, 1.20.2, 1.20.3, 1.21.0, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.22.0, 1.22.1, 1.22.2, 1.22.3, 1.22.4, 1.23.0rc1, 1.23.0rc2, 1.23.0rc3, 1.23.0, 1.23.1, 1.23.2, 1.23.3, 1.23.4, 1.23.5, 1.24.0rc1, 1.24.0rc2, 1.24.0, 1.24.1, 1.24.2, 1.24.3, 1.24.4, 1.25.0rc1, 1.25.0, 1.25.1, 1.25.2, 1.26.0b1, 1.26.0rc1, 1.26.0, 1.26.1, 1.26.2, 1.26.3, 1.26.4, 2.0.0b1, 2.0.0rc1)
ERROR: No matching distribution found for numpy==1000

3. 卸载老版本,安装最新版本

先卸载再安装

pip uninstall numpy
pip install numpy==2.0.0rc1

结果如下:

(base) C:\Users\Administrator>pip uninstall numpy
Found existing installation: numpy 1.24.3
Uninstalling numpy-1.24.3:Would remove:d:\programdata\anaconda3\lib\site-packages\numpy-1.24.3.dist-info\*d:\programdata\anaconda3\lib\site-packages\numpy\*d:\programdata\anaconda3\scripts\f2py-script.pyd:\programdata\anaconda3\scripts\f2py.exe
Proceed (Y/n)? ySuccessfully uninstalled numpy-1.24.3(base) C:\Users\Administrator>pip install numpy==2.0.0rc1

一顿操作后,运行代码,奇迹还是没有出现。

4. 既然2.x版本的不行,再换下1.x版本

这里就换下1.26.4版本试试,不行就再降低一个版本。

pip uninstall numpy
pip install numpy==1.26.4

命令行运行完毕,再次运行Python程序,这次竟然成功了(喜出望外)!
在这里插入图片描述


总结

几经折腾,看来不是Python 3.10 的问题,问题出在各种库的互相配合上。虽然通过虚拟一个低版本的python环境也可以解决matplotlib显示的问题。但作为研究,我们还是要深入一些。numpy作为科学运算一个重要的库,是pandas等许多库的依赖库,版本太低或太高都会影响运算。

虽然折腾,但以后,遇到问题又多了一个思路,也不失为一个新的收获!

如果有帮到你,不妨解决完问题,过来点个赞!

http://www.lryc.cn/news/342245.html

相关文章:

  • 【AIGC】1、爆火的 AIGC 到底是什么 | 全面介绍
  • 云计算技术概述_3.云计算的部署方式
  • 简述 BIO 、NIO 模型
  • 【Python小练】随机验证码
  • 《1w实盘and大盘基金预测 day30》
  • 软件工程案例学习-图书管理系统-面向对象方法
  • python:机器学习特征优选(过滤法)
  • CH32V 系列 MCU IAP 使用函数形式通过传参形式灵活指定APP跳转地址
  • 教程分享:如何为跨境电商、外贸、国际展会制作二维码?
  • ComfyUI 基础教程(十三):ComfyUI-Impact-Pack 面部修复
  • 专题五_位运算(2)
  • ZCC5503 18V 1A 6uA低静态功耗 同步降压控制器
  • python操作minio中常见错误
  • SpringCloud-Seata分布式事务的环境搭建搭建
  • ChatGPT4 Turbo 如何升级体验?官网如何使用最新版GPT-4 Turbo?
  • 如何利用工作流自定义一个AI智能体
  • 嵌入式学习day12
  • 【Leetcode 42】 接雨水-单调栈解法
  • Python 贪吃蛇
  • 计算机网络 2.4差错检验与校正
  • uniapp遍历数组对象的常见方法
  • Milvus向量数据库(一)Milvus存储byte[]类型源向量数据
  • Jupyter Notebook魔术命令
  • python基础---生成器
  • wangEditor 富文本详解
  • 文献速递:深度学习医学影像心脏疾病检测与诊断--从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测
  • Java多线程:常见的线程的创建方法及Thread类详解
  • 一招搞定生产管理
  • 学习CSS3,实现红色心形loading特效
  • 深度学习之基于Matlab神经网络的活体人脸和视频人脸识别系统