matplotlib 如何使用imshow与datetime轴与可变的时间步长和数据中的差距?

vptzau2j  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(141)

这个问题解释了如何在x轴上使用datetime对象:Dates in the xaxis for a matplotlib plot with imshow,并且效果很好。
但是我有对应于1分钟或3分钟的不同时间间隔的测量数据,并且在不同持续时间的数据中也有间隙- 10分钟或1小时或介于两者之间的任何时间。数据在一个带有datetime键和numpy数组值的字典中。有些键相隔1分钟,有些相隔3分钟。数据中也有> 3分钟的间隙,一般不超过10分钟。
如果我把它标为:ax.imshow(arr, extent = [x1, x2, y1, y2], aspect='auto')其中,x1和x2是开始和结束时间,y1和y2是垂直维度,而numpy是从上面提到的字典值生成的2d numpy数组,数据将均匀地分布在时间轴上,我希望间隙可见,我希望根据其时间分辨率和测量时间绘制数据。
我想到将nans写入数组来填补空白,但我还必须复制3分钟时间步长的数据来填补“空白”,因为大部分数据每分钟都可用。
我正在寻找一个更好,更优雅的选择。当然,如果有其他方法,我不必使用imshow()

4si2a6ki

4si2a6ki1#

我没有找到一个使用matplotlib解决上述问题的方法。但plotly提供了一个解决方案,因为Heatmap对象也允许将时间作为参数:

import plotly.graph_objects as go
import numpy as np

# Assuming image is your image and times is your array of time values
image = np.random.rand(10, 10)  # Replace with your image
times = np.array([1, 2, 4, 7, 11, 16, 22, 29, 37, 46])  # Replace with your times

# Create a 2D heatmap to represent the image
fig = go.Figure(data=go.Heatmap(
    z=image,
    x=times,
    colorscale='Gray',
    showscale=False
))

fig.update_layout(
    xaxis_title="Time",
    yaxis_title="Y",
    autosize=False,
    width=500,
    height=500,
    margin=dict(
        l=50,
        r=50,
        b=100,
        t=100,
        pad=4
    )
)

fig.show()

字符串

相关问题