为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2021-11-09 15:05:49
我有一堆数据文件的情况,这些数据文件在给定的时间范围内有许多样本,这取决于系统。例如,在时间 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()我认为这段代码表达了我的意图,尽管它不起作用。
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

我希望这是你想要的。


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 网站。


希望这可以帮助。


查看完整回答
反对 回复 2021-11-09
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

替代,我使用的方法,但蒂姆的回答仍然准确。由于时间码不是日期/时间信息,我修改了自己的代码以添加标签作为第二列,我称之为“p”(它们是聚合物)。


import numpy as np

import pandas as pd

datain = 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()

当然,如果需要,可以类似地绘制其他列。


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号