gpt4 book ai didi

python - 如何使用 python 以一种自然的人类可读的方式绘制与时间相关的信息?

转载 作者:行者123 更新时间:2023-12-01 06:10:46 25 4
gpt4 key购买 nike

通常,您有一组与时间值相关的事件(访问网站、价格信息等),比如说时间戳(尽管日期时间对象就可以了)。如何绘制它们,以便时间轴获得人类可读的、有意义的值,而不仅仅是秒数?

我一直在寻找 gnuplot 和 matplot,但我还没有找到完成此操作的方法。问题是,虽然 matplot 可以每小时设置一次刻度,但最好能够每 N 小时查看一次文本时间信息,而不必对它们进行计数。

我怀疑 gnuplot 太过分了/并不是为此而设计的。有什么建议吗?

最佳答案

FWIW 这是一个使用优秀且文档齐全的 matplotlib 绘制一些值与时间的简单示例:

data.csv:    VISIT_TIME  TOTAL_VISITS    06:00:00    290    06:30:00    306    07:00:00    364    07:30:00    363    08:00:00    469    08:30:00    436    09:00:00    449    09:30:00    451    10:00:00    524    10:30:00    506    11:00:00    613    11:30:00    585    12:00:00    620    12:30:00    529    13:00:00    588    13:30:00    545

Simple program for illustrative purposes:

import matplotlib.dates as mdates
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import datetime as dt
import sys

def main( datafile ):
np_rec_array = mlab.csv2rec( datafile, delimiter='\t' )
np_rec_array.sort() # in-place sort
# a `figure` is a starting point for MPL visualizations
fig = plt.figure( figsize=(8,6) )
# add a set of `axes` to above `figure`
ax = fig.add_subplot(111)
x = np_rec_array.visit_time
y = np_rec_array.total_visits
# `plot_date` is like `plot` but allows for easier x-axis formatting
ax.plot_date(x, y, 'o-', color='g')
# show time every 30 minutes
ax.xaxis.set_major_locator( mdates.MinuteLocator(interval=30) )
# specify time format
ax.xaxis.set_major_formatter( mdates.DateFormatter("%H:%M") )
# set x-axis label rotation (otherwise they can overlap)
for l in ax.get_xticklabels():
l.set_rotation(60)
plt.title( 'Website Visits' )
plt.show()

if __name__ == '__main__':
if len( sys.argv ) == 1:
sys.stderr.write( 'need a filename, exiting...' )
sys.exit(-1)
main( sys.argv[1] )

输出如下图: enter image description here

关于python - 如何使用 python 以一种自然的人类可读的方式绘制与时间相关的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092561/

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