所以我对 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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)