当前位置: 首页 > 面试题库 >

使用matplotlib在轴标签中创建带有日期和时间的图形

廖臻
2023-03-14
问题内容

我将数据存储在以下结构的数组中,

[[1293606162197, 0, 0],
 [1293605477994, 63, 0],
 [1293605478057, 0, 0],
 [1293605478072, 2735, 1249],
 [1293606162213, 0, 0],
 [1293606162229, 0, 0]]

第一列是纪元时间(in ms),第二列是y1,第三列是y2。我
需要一个在x轴y1和y2左,右
y轴上都有时间的图。

我一直在仔细阅读文档,但找不到任何方法来
显示我的x轴刻度,以显示日期和时间,例如“ 28/12 16:48”,即
“ date / month hour:min”。所有文档帮助我的是
仅显示日期,但这不是我想要的。任何帮助将不胜感激。


问题答案:

我希望这有帮助。我总是很难过matplotlib的日期。Matplotlib需要一种浮动
格式,该格式是从纪元以来的几天。辅助函数num2date以及date2numpython
内置datetime函数可用于来回转换。此 示例取消了格式化业务。您可以使用将任何绘图上的轴更改为日期轴。
set_major_formatter.

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import dates
import datetime

a = np.array([
    [1293605162197, 0, 0],
    [1293605477994, 63, 0],
    [1293605478057, 0, 0],
    [1293605478072, 2735, 1249],
    [1293606162213, 0, 0],
    [1293606162229, 0, 0]])

d = a[:,0]
y1 = a[:,1]
y2 = a[:,2]

# convert epoch to matplotlib float format
s = d/1000
ms = d-1000*s  # not needed?
dts = map(datetime.datetime.fromtimestamp, s)
fds = dates.date2num(dts) # converted

# matplotlib date format object
hfmt = dates.DateFormatter('%m/%d %H:%M')

fig = plt.figure()
ax = fig.add_subplot(111)
ax.vlines(fds, y2, y1)

ax.xaxis.set_major_locator(dates.MinuteLocator())
ax.xaxis.set_major_formatter(hfmt)
ax.set_ylim(bottom = 0)
plt.xticks(rotation='vertical')
plt.subplots_adjust(bottom=.3)
plt.show()


 类似资料:
  • 本文向大家介绍Python 用matplotlib画以时间日期为x轴的图像,包括了Python 用matplotlib画以时间日期为x轴的图像的使用技巧和注意事项,需要的朋友参考一下 1.效果展示 主要效果就是,x轴 显示时间单位。 下图展示的就是想要到达的效果。 其实主要是运用了datetime.date这个类型的变量作为x轴坐标的数据输入。 2. 源码 将data.txt中的数据读入,用mat

  • 问题内容: 我尝试使用以下代码在具有日期时间x轴的图形上绘制矩形: 但是,我得到了错误: 怎么了 (我正在使用matplotlib 1.0.1版) 问题答案: 问题在于,matplotlib使用其自己的日期/时间表示形式(浮动天数),因此您必须先进行转换。此外,您将不得不告诉xaxis它应该具有日期/时间刻度和标签。下面的代码可以做到这一点: 结果: 注意 :Matplotlib 1.0.1 非常

  • 问题内容: 我正在尝试使用twiny在同一张图上绘制两个单独的数量,如下所示: 并且数据显示的很好,但是我遇到的问题是,图形标题与辅助x轴上的轴标签重叠,因此几乎看不清(我想在此处发布图片示例,但我没有足够高的代表)。 我想知道是否有直接将标题直接移动几十个像素的直接方法,以使图表看起来更漂亮。 问题答案: 我不确定在更高版本的matplotlib中它是否是一项新功能,但至少对于1.3.1,这很简

  • 问题内容: 我正在尝试在x轴上绘制日期图,在y轴上绘制值。它工作正常,但无法获得适当的X轴范围。尽管我的日期是今天,但x轴范围始终是2012年1月至2016年1月。我什至指定xlim应该是第一个和最后一个日期。 我正在为python-django写这个,如果相关的话。 问题答案: 从OP看到实际数据后,所有值都在同一日期/时间。因此matplotlib自动将x轴缩小。你仍然可以手动设置对象的x轴限

  • 我想在Amazon Redshift中生成一个日期和时间表。下面的查询可以在Postgresql 9.1及以上版本中运行,但不幸的是,我们仅限于Amazon Redshift,这导致了错误:“函数generate_series不存在。”您在8.02中生成时间序列(如结果表)时的帮助将非常感谢。 编辑:我能够用下面的代码生成我想要的时间序列,但无法将它们创建到Redshift表中。错误消息为: “红

  • 本文向大家介绍matplotlib 创建轴,包括了matplotlib 创建轴的使用技巧和注意事项,需要的朋友参考一下 示例 在matplotlib中创建轴的主要方法有两种:使用pyplot或使用面向对象的API。 使用pyplot: 使用面向对象的API: 便捷功能可用于在一个命令中生成图形和子图集合:plt.subplots()