Mac HighSierra下Pyplot投影报numpy.float64错误,无法显示/保存图形
解决Pyplot投影报错“Pyplot projection doesn't admit data: numpy.float64”的方案
我之前在维护旧Python环境时碰到过几乎一模一样的问题,结合你的环境(High Sierra、Python2.7、IPython5.5.0),这个问题大概率是版本兼容性冲突导致的——毕竟Python2.7早在2020年就停止官方支持了,后续matplotlib的3.x版本完全放弃了对它的适配,而投影相关模块刚好是兼容性问题的重灾区。给你几个针对性的解决步骤:
1. 锁定兼容的matplotlib版本
Python2.7能稳定支持的最高matplotlib版本是2.2.5,如果你的matplotlib是3.x版本,肯定会出现各种奇怪的报错。先检查当前版本:
pip2 show matplotlib
如果版本高于2.2.5,先卸载旧版本:
pip2 uninstall -y matplotlib
然后重装指定兼容版本:
pip2 install matplotlib==2.2.5
2. 同步适配numpy版本
numpy的新版本同样不再支持Python2.7,你需要把numpy降到1.16.6(Python2.7支持的最高numpy版本),否则即使matplotlib版本正确,也可能因为numpy的API变化触发报错:
pip2 uninstall -y numpy pip2 install numpy==1.16.6
3. 验证投影功能是否恢复正常
安装完成后,用一段极简代码测试polar投影(最容易复现问题的场景之一):
import matplotlib.pyplot as plt import numpy as np # 测试极坐标投影 theta = np.linspace(0, 2*np.pi, 100) r = np.sin(2*theta) plt.figure() ax = plt.subplot(111, projection='polar') ax.plot(theta, r) ax.grid(True) plt.show()
如果这段代码能正常显示带网格和曲线的极坐标图,说明问题已经解决。
额外提醒
- 尽量避免在Python2.7环境下做复杂可视化开发,不仅是matplotlib,绝大多数依赖库都已经停止维护,后续还会遇到更多难以排查的问题。如果条件允许,建议升级到Python3.8+(High Sierra完全支持),能彻底规避这类兼容性陷阱。
- IPython5.5.0和matplotlib2.2.5是兼容的,不需要降级IPython,除非你后续遇到交互相关的其他问题。
内容的提问来源于stack exchange,提问作者Isa Rebollido
相关产品推荐
相关产品推荐

