gpt4 book ai didi

Python:SpatiaLite 表到带有日期时间格式的 numpy recarray?

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:10 26 4
gpt4 key购买 nike

我在 QGIS-user forum 上发布了这个问题但这可能太技术性了,因此我也捕获机会在这里尝试一下。

我的计划是有一个 QGIS 插件来读取和绘制与矢量图层中选定点对应的时间序列数据(这些点代表不同的测量站,我需要快速查看每个和其中一个的时间序列,有时同一地 block 中的几个站点)。因此,我需要 Python 从 Spatialite 表中读取时间序列数据,然后使用 Matplotlib.plot 绘制它:

from pyspatialite import dbapi2 as sqlite 
import numpy as np
import matplotlib.pyplot as plt
import datetime

MyPath = r"C:\DATA\DBTEST\MyTestDb.sqlite"
conn = sqlite.connect(MyPath,detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES)
curs = conn.cursor()

sql = r"""SELECT Date as 'date [datetime]', Level_masl FROM MyTable"""
rs = curs.execute(sql)
recs = rs.fetchall()

My_format = [('date_time', datetime.datetime), ('values', float)]
table = np.array(recs, dtype=My_format)
table2=table.view(np.recarray)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(table2.date_time, table2.values, 'o-')
....

但似乎我没有得到正确的数据类型,因为 matplotlib 不接受我的“date_time”。打印表 2 如下所示,我猜小 u 表示它是 unicode 而不是 datetime?

print table2

recarray([(u'2011-04-20 09:42:00', 703.46000000000004), (u'2011-04-20 09:43:00', 705.35000000000002), ... dtype=[('date_time', '|O4'), ('values', '

我不是程序员,绝对是 Python 和 Spatialite 的初学者,所以非常感谢任何帮助!

/JK

最佳答案

基本上,您正在尝试传入一个字符串。

Matplotlib 有几个方便的函数,用于将日期字符串转换为其(内部)日期时间表示。

尝试更像:

...
from matplotlib.dates import datestr2num
...

...
time = datestr2num(table2.date_time)
ax.plot_date(time, table2.values, 'o-')
...

plot_dateplot 相同,它只是自动格式化 x 轴以具有时间(例如小时、日期、月份等)标签。

如果您更愿意使用 plot(或 bar 等),只需调用 ax.plot(time, y, ...)ax.bar 像往常一样,然后调用 ax.xaxis_date() 来设置日期标签。

关于Python:SpatiaLite 表到带有日期时间格式的 numpy recarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com