我如何 format/reshape 我的数据来为每个对象获取单独的数据?
How do I format/reshape my data to get separate data for each object?
目前,我的数据在嵌套列表中为 [[ID1, Pos1, Time1], [ID2, Pos2, Time2], [ID1, Pos3, Time3].....]。
然后我将其放入 Pandas 数据框中。我想在 Plotly 中分别为每个对象 ID 绘制位置(Pos 值)与时间的关系图,而我对 plotly 文档的搜索没有帮助。我想要的是每个对象 ID 在同一张图上有一个单独的位置与时间线图。
我该怎么做?我不确定我是否应该首先重塑我的数据以便以某种方式对重复的 ID 值进行分组,或者我是否可以直接从 plotly 绘图函数中执行此操作。我是新手,所以非常感谢任何帮助。
这是代码片段:
dataset=[]
for obj in scene.objects:
obj_data = [obj.ID, obj.time, obj.pos]
dataset.append(obj_data)
df = pd.DataFrame(data=dataset, columns=["ID", "Time", "Pos"])
此外,数据帧前五个条目的输出:
ID Time ... Speed
0 4 0.0 ... 1.465062
1 5 0.0 ... 1.195697
2 6 0.0 ... 1.443732
3 7 0.0 ... 1.318886
4 8 0.0 ... 1.258748
您可以按“ID”对数据框中的数据进行分组,然后将线图添加到同一图中:
import plotly.graph_objs as go
fig = go.Figure() # Same figure object
for group_name, group_df in df.groupby(["ID"]):
# group_name is the "ID" value
# group_df is a dataframe with the rows of each "ID" value
fig.add_trace(
go.Scatter( # This is how we draw a line plot
x=group_df["Time"], y=group_df["Pos"],
name=group_name, # Add the "ID" as the name of the line
)
)
fig.show() # Display figure
这是使用此代码的示例输入和预期输出:
ID Pos Time
0 1 1 1
1 1 3 2
2 0 2 1
3 0 4 2
目前,我的数据在嵌套列表中为 [[ID1, Pos1, Time1], [ID2, Pos2, Time2], [ID1, Pos3, Time3].....]。
然后我将其放入 Pandas 数据框中。我想在 Plotly 中分别为每个对象 ID 绘制位置(Pos 值)与时间的关系图,而我对 plotly 文档的搜索没有帮助。我想要的是每个对象 ID 在同一张图上有一个单独的位置与时间线图。
我该怎么做?我不确定我是否应该首先重塑我的数据以便以某种方式对重复的 ID 值进行分组,或者我是否可以直接从 plotly 绘图函数中执行此操作。我是新手,所以非常感谢任何帮助。
这是代码片段:
dataset=[]
for obj in scene.objects:
obj_data = [obj.ID, obj.time, obj.pos]
dataset.append(obj_data)
df = pd.DataFrame(data=dataset, columns=["ID", "Time", "Pos"])
此外,数据帧前五个条目的输出:
ID Time ... Speed
0 4 0.0 ... 1.465062
1 5 0.0 ... 1.195697
2 6 0.0 ... 1.443732
3 7 0.0 ... 1.318886
4 8 0.0 ... 1.258748
您可以按“ID”对数据框中的数据进行分组,然后将线图添加到同一图中:
import plotly.graph_objs as go
fig = go.Figure() # Same figure object
for group_name, group_df in df.groupby(["ID"]):
# group_name is the "ID" value
# group_df is a dataframe with the rows of each "ID" value
fig.add_trace(
go.Scatter( # This is how we draw a line plot
x=group_df["Time"], y=group_df["Pos"],
name=group_name, # Add the "ID" as the name of the line
)
)
fig.show() # Display figure
这是使用此代码的示例输入和预期输出:
ID Pos Time
0 1 1 1
1 1 3 2
2 0 2 1
3 0 4 2