Matplotlib:在采样d时动态地松弛x轴

2024-04-25 12:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在绘制一些时间序列数据;我有一个非常长的时间序列(~68k行)。我有一个小助手函数,它通过切片列表获取一个小子集,执行一些分析,然后绘制结果

结果图是零索引的,因为我只传递切片的子集。我希望它是绝对索引。如何动态更改标签?你知道吗

这里有一些和我看到的相似的东西

data = load_data() # very long
start, end = get_start_end_from_cmd_line()
subset = data[start, end]
data_to_plot = process_data(subset)

plt.plot(data_to_plot, label="P1")
plt.show()

问题是我的图形x轴的范围是从0(end - start),而不是从startend。我想动态地更改标签,这样它们对于我正在查看的任何大小的图形都是正确的,如果我平移或缩放,它们都是正确的


Tags: to数据图形dataplot时间绘制动态
1条回答
网友
1楼 · 发布于 2024-04-25 12:28:46

您需要包括与计算的y值集成对的x值集的范围,否则matplotlib将默认为x轴的基零:

可能是这样的:

import matplotlib.pyplot as plt


def get_start_end_from_cmd_line():   # substitute for your own function
    return 5, 9

def load_data():                     # substitute for your own function
    x, y = (list(range(3, 13)), list(range(10)))
    return x, y

xdata, ydata = load_data()
start, end = get_start_end_from_cmd_line()
subsetx, subsety = xdata[start: end], ydata[start: end]   # slice both the x and the corresponding y
plt.plot(subsetx, subsety, label="P1")
plt.show()

由于xdata可能仅隐含在数据集中,因此您需要构造一组x值:在某些情况下,(原始x数据从零开始,是整数,最简单的增量是1),您可以使用此值替换:

xdata = range([start: end])   # matplotlib will also accept a range object i/o a list so you do not need to do list(range([start: end]))

查看^{}以构造更复杂的序列

相关问题 更多 >