matplotlib中的numpy和datetime处理

2024-04-25 23:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将曲线拟合到一个时间序列,正如这里所解释的:https://stackoverflow.com/a/17639070/12012445

如果我不导入熊猫模块-一切都像个魔咒。 如果我这么做了,我必须这么做,-我会得到“'datetime.timezone'对象没有属性'\u utcoffset''

在我看来,问题是绘制步骤,如果它返回多项式p(x)的系数,这反过来又取决于日期时间。。。你知道吗

我经历了很多提示,包括Converting between datetime, Timestamp and datetime64

我很绝望(第5小时调查)

import pandas as pd #note that I'm not even calling it anywhere... so confused

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
import time


dates = [dt.datetime(1978, 7, 7),
     dt.datetime(1980, 9, 26),
     dt.datetime(1983, 8, 1),
     dt.datetime(1985, 8, 8)]

y = [0.00134328779552718,
     0.00155187668863844,
     0.0039431374327427,
     0.00780037563783297]


yerr = [0.0000137547160254577,
        0.0000225670232594083,
        0.000105623642510075,
        0.00011343121508]

x = mdates.date2num(dates)

z4 = np.polyfit(x, y, 3)
p4 = np.poly1d(z4)

fig, cx = plt.subplots()

xx = np.linspace(x.min(), x.max(), 100)
dd = mdates.num2date(xx)

cx.plot(dd, p4(xx), '-g')
cx.plot(dates, y, '+', color='b', label='blub')
cx.errorbar(dates, y,
             yerr,
             marker='.',
             color='k',
             ecolor='b',
             markerfacecolor='b',
             label="series 1",
             capsize=0,
             linestyle='')

cx.grid()
cx.set_ylim(0, 0.03)
plt.show()

期望值:

enter image description here


Tags: importdatetimematplotlibasnp时间dtplt
1条回答
网友
1楼 · 发布于 2024-04-25 23:35:26

如果导入pandas,它将注册matplotlib使用的日期时间转换器。很明显,这些东西在哪里有问题。如果发生这种情况,您可以通过

import pandas as pd
pd.plotting.deregister_matplotlib_converters()

这将确保使用matplotlib转换器,并且这些转换器似乎能按预期工作。你知道吗

相关问题 更多 >