|
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、问题:df.plot()显示不出图像二、尝试各种解决办法1.增加matplotlib.use,设定GUI2.升级matplotlib版本三、numpy是个重要的库1.检查numpy版本2.查看可用版本3.卸载老版本,安装最新版本4.既然2.x版本的不行,再换下1.x版本总结前言Python3.10使用matplotlib绘图,显示不出图像。首先排除代码的问题,因为使用Python3.8的虚拟环境显示是OK的,换到Python3.10却不行。为什么,折腾了好久,终于让我找到原因了。这里分享一下,希望可以帮助到大家。一、问题:df.plot()显示不出图像importnumpyasnpimportpandasaspdpd.options.mode.copy_on_write=Trueimportmatplotlib.pyplotaspltfromAshareimport*defplot_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)123456789101112131415运行完,什么图也没渲染出来,可以看见Figer窗口,但一闪而过就结束了。二、尝试各种解决办法1.增加matplotlib.use,设定GUI使用matplotlib时经常发生plt.show()之后不显示图像的情况,查网上说,是没有后台gui所致。print(matplotlib.get_backend())后发现后台QtAgg,在代码中添加以下3行代码。importmatplotlibprint(matplotlib.get_backend())matplotlib.use('QtAgg')123修改后如下:importnumpyasnpimportpandasaspdpd.options.mode.copy_on_write=Trueimportmatplotlibprint(matplotlib.get_backend())matplotlib.use('QtAgg')importmatplotlib.pyplotaspltfromAshareimport*defplot_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)123456789101112131415161718可修改完,问题依旧…2.升级matplotlib版本其次想到的是更新matplotlib,将从matplotlib-3.7.0版本更新到matplotlib-3.8.4。pipinstallmatplotlib-U-ihttp://pypi.douban.com/simple1升级完,问题依旧…实在不行,卸载了重新安装。pipuninstallmatplotlibpipinstallmatplotlib-ihttp://pypi.douban.com/simple12问题依旧。三、numpy是个重要的库安装matplotlib默认会顺带安装numpy,会不会numpy版本的问题?1.检查numpy版本pipshownumpy查看版本为1.24.3。(base)C:\Users\Administrator>pipshownumpyName:numpyVersion:1.24.31232.查看可用版本使用命令pipinstallnumpy==1000,故意输入一个不存在的版本,会显示所有可用版本。(base)C:\Users\Administrator>pipinstallnumpy==1000ERROR:Couldnotfindaversionthatsatisfiestherequirementnumpy==1000(fromversions: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:Nomatchingdistributionfoundfornumpy==10001233.卸载老版本,安装最新版本先卸载再安装pipuninstallnumpypipinstallnumpy==2.0.0rc112结果如下:(base)C:\Users\Administrator>pipuninstallnumpyFoundexistinginstallation:numpy1.24.3Uninstallingnumpy-1.24.3:Wouldremove: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.exeProceed(Y/n)?ySuccessfullyuninstallednumpy-1.24.3(base)C:\Users\Administrator>pipinstallnumpy==2.0.0rc1123456789101112一顿操作后,运行代码,奇迹还是没有出现。4.既然2.x版本的不行,再换下1.x版本这里就换下1.26.4版本试试,不行就再降低一个版本。pipuninstallnumpypipinstallnumpy==1.26.412命令行运行完毕,再次运行Python程序,这次竟然成功了(喜出望外)!总结几经折腾,看来不是Python3.10的问题,问题出在各种库的互相配合上。虽然通过虚拟一个低版本的python环境也可以解决matplotlib显示的问题。但作为研究,我们还是要深入一些。numpy作为科学运算一个重要的库,是pandas等许多库的依赖库,版本太低或太高都会影响运算。虽然折腾,但以后,遇到问题又多了一个思路,也不失为一个新的收获!如果有帮到你,不妨解决完问题,过来点个赞!
|
|