猿问

来自 numpy 的具有特定 x 值的 Python 绘图线

我有一堆数据文件的情况,这些数据文件在给定的时间范围内有许多样本,这取决于系统。例如,在时间 t=1 时,我可能有一个包含 10 个项目或 20 个项目的文件,稍后在该文件中我将始终拥有相同数量的项目。格式为 time、x、y、z 列,并加载到 numpy 数组中。时间值显示了哪一帧,但如前所述,总是相同的,让我们以 10 作为示例。所以我会有一个 (10,4) numpy 数组,其中时间值是相同的,但是文件中有很多帧,所以可以说 100 帧,所以我真的有 (1000,4)。我想在 x 轴上绘制带有时间的数据并在 y 上对其他数据进行操作,但我不确定如何使用 matplotlib 中的线图方法来执行此操作。通常同时提供 x, y 值我相信我需要做一个散点图,所以我希望有更好的方法来做到这一点。我理想中想要的是将具有相同时间码的每一行视为不同的系列(因此它的颜色会不同),并且下一帧(时间值)中相同行号的下一位数据将被标记为相同的颜色,提供那些良好的连续线条。我们可以查看时间列并计算出有多少项共享一个时间码,我们称之为“n”。示例代码:我们可以查看时间列并计算出有多少项共享一个时间码,我们称之为“n”。示例代码:我们可以查看时间列并计算出有多少项共享一个时间码,我们称之为“n”。示例代码:

a = numpy.loadtxt('sampledata.txt')
plt.plot(a[:0,:,n],a[:1,:1])
plt.show()

我认为这段代码表达了我的意图,尽管它不起作用。


森林海
浏览 134回答 2
2回答

BIG阳

我希望这是你想要的。seaborn scatterplot可以将数据分类到一些具有相同代码(在这种情况下为时间代码)并使用相同颜色的组。import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsdf = pd.read_csv(r"E:\Programming\Python\Matplotlib\timecodes.csv",                 names=["time","x","y","z","code"]) #use your filedf["time"]=pd.to_datetime(df["time"]) #recognize the data as Timedf["x"]=df["time"].dt.day # I changed the data into "Date only" and imported to x column. Easier to see on graph.#just used random numbers in y and z in my data.sns.scatterplot("x", "y", data = df, hue = "code") #hue does the groupingplt.show()我在这里使用了 csv 文件,但您也可以通过添加sep="\t"参数来处理您的文本文件。我还在文件中添加了一个代码。如果你有它,代码可以对图中的数据进行分组,所以你不必分开或制作分层索引。如果您想更改颜色或分组,请参阅 seaborn 网站。希望这可以帮助。

沧海一幻觉

替代,我使用的方法,但蒂姆的回答仍然准确。由于时间码不是日期/时间信息,我修改了自己的代码以添加标签作为第二列,我称之为“p”(它们是聚合物)。import numpy as npimport pandas as pddatain = np.loadtxt('somefile.txt')df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])ax = sns.scatterplot("t","x", data = df, hue = "p")plt.show()当然,如果需要,可以类似地绘制其他列。
随时随地看视频慕课网APP

相关分类

Python
我要回答