首页 > 解决方案 > 具有来自 numpy 的特定 x 值的 Python 绘图线

问题描述

我有一堆数据文件的情况,这些数据文件在给定的时间范围内有许多样本,具体取决于系统。即例如在时间 t=1 时,我可能有一个包含 10 项或 20 项的文件,稍后在该文件中我将始终拥有相同数量的项目。格式为时间、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()

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

标签: pythonnumpymatplotlib

解决方案


编辑:我希望这是你想要的。

seaborn scatterplot可以将数据分类到具有相同代码(在本例中为时间代码)的某些组中,并对它们使用相同的颜色。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv(r"E:\Programming\Python\Matplotlib\timecodes.csv",
                 names=["time","x","y","z","code"]) #use your file

df["time"]=pd.to_datetime(df["time"]) #recognize the data as Time
df["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 grouping

plt.show()

我在这里使用了 csv 文件,但您也可以通过添加sep="\t"参数来处理您的文本文件。我还在文件中添加了一个代码。如果你有它,代码可以对图中的数据进行分组,因此你不必分离或制作分层索引。如果您想更改颜色或分组,请参阅 seaborn 网站。

希望这可以帮助。


推荐阅读