繁体   English   中英

使用imshow在xaxis中为matplotlib绘制日期

[英]Dates in the xaxis for a matplotlib plot with imshow

所以我是使用matplotlib进行编程的新手。 我使用imshow()和数组创建了一个颜色图。 起初,轴只是我的数组的行号和列号。 我使用extent =(xmin,xmax,ymin,ymax)分别得到unix时间和海拔高度的x轴。

我想将x轴从unix时间(982376726,982377321)更改为UT(02:25:26,02:35:21)。 我已经创建了一个HH:MM:SS的时间范围列表。 我不知道如何用这些新数字替换我当前的x轴,而不改变颜色图(或使其消失)。

我正在看datetime.time,但我对此感到困惑。

任何帮助将不胜感激!

我已经汇总了一些示例代码,可以帮助您解决问题。

代码首先使用numpy.random生成一些随机数据。 然后计算x限制和y限制,其中x限制将基于您的问题中给出的两个unix时间戳,而y限制只是通用数字。

然后代码绘制随机数据,并使用pyplot方法将x轴格式转换为精美表示的字符串(而不是unix时间戳或数组编号)。

代码评论很好,应该解释你需要的一切,如果不是,请评论并要求澄清。

import numpy as np
import matplotlib.pyplot as plt

import matplotlib.dates as mdates

import datetime as dt

# Generate some random data for imshow
N = 10
arr = np.random.random((N, N))

# Create your x-limits. Using two of your unix timestamps you first
# create a list of datetime.datetime objects using map.
x_lims = list(map(dt.datetime.fromtimestamp, [982376726, 982377321]))

# You can then convert these datetime.datetime objects to the correct
# format for matplotlib to work with.
x_lims = mdates.date2num(x_lims)

# Set some generic y-limits.
y_lims = [0, 100]

fig, ax = plt.subplots()

# Using ax.imshow we set two keyword arguments. The first is extent.
# We give extent the values from x_lims and y_lims above.
# We also set the aspect to "auto" which should set the plot up nicely.
ax.imshow(arr, extent = [x_lims[0], x_lims[1],  y_lims[0], y_lims[1]], 
          aspect='auto')

# We tell Matplotlib that the x-axis is filled with datetime data, 
# this converts it from a float (which is the output of date2num) 
# into a nice datetime string.
ax.xaxis_date()

# We can use a DateFormatter to choose how this datetime string will look.
# I have chosen HH:MM:SS though you could add DD/MM/YY if you had data
# over different days.
date_format = mdates.DateFormatter('%H:%M:%S')

ax.xaxis.set_major_formatter(date_format)

# This simply sets the x-axis data to diagonal so it fits better.
fig.autofmt_xdate()

plt.show()

示例图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM