IPython中Matplotlib手动缩放后回退/主页按钮异常及报错问题
Matplotlib缩放/回退按钮异常及版本查询方案
一、获取Matplotlib版本的正确方法
你提到print(matplotlib.__version__)无法使用,大概率是还没导入matplotlib库导致的,试试下面几种靠谱的方法:
- 在IPython控制台中执行:
import matplotlib print(matplotlib.__version__)
- 如果你用conda管理环境,直接在终端里查看:
conda list matplotlib
- 要是用pip安装的matplotlib,终端执行:
pip show matplotlib
二、问题详情
复现代码
运行以下代码可生成预期图像,但后续操作会出现异常:
import matplotlib.pyplot as plt import numpy as np %matplotlib test_numbers = np.ones((1000,1), dtype=float) test_numbers[500] = 0 fig, ax = plt.subplots() ax.plot(test_numbers)
异常现象
- 手动缩放图形窗口功能正常,但点击窗口中的回退或主页按钮时,轴缩放会被强制设置为
([0,1], [0,1]) - 调整图形窗口大小后,再使用缩放+回退功能,会触发如下错误:
File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 155, in __draw_idle_agg self.draw() File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 127, in draw super(FigureCanvasQTAggBase, self).draw() File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 430, in draw self.figure.draw(self.renderer) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\figure.py", line 1299, in draw renderer, self, artists, self.suppressComposite) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\image.py", line 138, in _draw_list_compositing_images a.draw(renderer) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\axes\_base.py", line 2437, in draw mimage._draw_list_compositing_images(renderer, self, artists) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\image.py", line 138, in _draw_list_compositing_images a.draw(renderer) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\axis.py", line 1133, in draw ticks_to_draw = self._update_ticks(renderer) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\axis.py", line 974, in _update_ticks tick_tups = list(self.iter_ticks()) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\axis.py", line 917, in iter_ticks majorLocs = self.major.locator() File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\dates.py", line 1061, in __call__ self.refresh() File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\dates.py", line 1081, in refresh dmin, dmax = self.viewlim_to_dt() File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\dates.py", line 839, in viewlim_to_dt return num2date(vmin, self.tz), num2date(vmax, self.tz) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\dates.py", line 445, in num2date return _from_ordinalf(x, tz) File "C:\Users\mypath\AppData\Local\Continuum\Miniconda3\lib\site-packages\matplotlib\dates.py", line 260, in _from_ordinalf dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC) ValueError: ordinal must be >= 1
已知环境信息:Python 3.6.3、IPython 6.2.1、conda 4.4.6
内容的提问来源于stack exchange,提问作者Eulenfuchswiesel
相关产品推荐
相关产品推荐

