ValueError:视图限制最小值-0.001小于1,并且是无效的Matplotlib日期值

时间:2019-04-05 15:00:06

标签: python matplotlib

我从气象站获取数据进行绘图,包括温度,压力和辐射测量。当试图绘制不同的数据点时,我总是会遇到此错误...即使代码适用于参数完全相同但测量值明显不同的另一个测站。 我已经尝试了所有方法,但是找不到问题的根源。我希望有一个人可以帮助我!

a link

1 个答案:

答案 0 :(得分:0)

您的症状看起来类似于this个已知的错误。我无法确认,因为您的代码看起来不完整。例如,您没有显示dates_M是什么。  忽略这一点,我将看看x_time_M中的值。我希望它们都是numpy.nan之类的东西。然后查看daten_si_M找出原因。

无论如何,这是我认为您(和我)正在看到的错误的简单得多的情况。

import matplotlib.pyplot as plt
import numpy as np

fig,ax = plt.subplots()
ax.xaxis_date()
ax.plot([np.nan])

plt.show()

这会触发与您看到的相同的异常。

ValueError: view limit minimum -0.001 is less than 1 and is an invalid
Matplotlib date value.  This often happens if you pass a non-datetime to
an axis that has datetime units

将此绘图调用更改为正常。

ax.plot([])

据我了解,matplotlib日期值不能小于1。在此示例中,所有坐标(此处仅一个)为numpy.nan,这导致视图限制设置为(- 0.001,0.001),都不能用作日期,从而触发异常。

我在自己的代码中遇到相同的问题,该代码使用matplotlib 2.2.2,并且没有升级选项。我想出的唯一解决方法是在检测到这种情况时在 x 轴上设置限制。

...
ax.set_xlim(now,now+oneDay)
...

在我的情况下,范围没有区别,因为没有什么更好的了,因为所有 x 坐标都是numpy.nan

祝你好运。