在对时间数据进行归一化后,在单个图形中针对处于不同时间限制的时间数据绘制值
Plotting values against time data, which is in different time limits, in a sigle graph after normalising time data
我有一个数据框,它有一些与时间数据相对应的值。此处的时间数据采用离散单位,因为 Time
列中给出了 int 数据类型。在此数据框中,时间间隔是不规则的,描述了 Event
列中给出的某些事件。必须绘制的值在 Values
列中。
data = {'Time':[21,22,23,24,25,26,27,28,29,30,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10],
'Event':[8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3],
'Values':[10,15,23,17,18,26,24,30,35,42,44,42,38,36,34,30,27,25,27,24,1,0,2,3,5,26,30,40,42,50]}
data_df = pd.DataFrame(data)
data_df
使用以下代码,我能够根据事件的时间值获取按事件分隔的图表:
fig = px.line(data_df,
x='Time',
y='Values',
color='Event',
facet_col = 'Event',
facet_col_wrap=1
)
fig.update_xaxes(matches=None, showticklabels = True)
fig.show()
输出:
现在,我很好奇是否有可能以某种方式将这些图合并到具有标准化 x 轴的单个图中。时间值下限 = 0。时间值上限 = 所有事件的最大时间间隔。基本上 x 轴应该足够大以容纳所有图形。
期望的输出:
我能想到的方法是创建另一个具有标准化 Time
值的列,然后绘制单个图形。在这里,我很好奇是否可以避免这种情况。如有任何相关信息,我们将不胜感激。
- 已使用 pandas 将 Time 变基为每个 Event[=22] 的序列=]
- plotly 然后直截了当
import pandas as pd
import plotly.express as px
# fmt: off
data = {'Time':[21,22,23,24,25,26,27,28,29,30,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10],
'Event':[8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3],
'Values':[10,15,23,17,18,26,24,30,35,42,44,42,38,36,34,30,27,25,27,24,1,0,2,3,5,26,30,40,42,50]}
# fmt: on
data_df = pd.DataFrame(data)
px.line(
data_df.groupby("Event").apply(lambda d: d.assign(Time=range(1, len(d)+1, 1))),
x="Time",
y="Values",
color="Event",
)
我有一个数据框,它有一些与时间数据相对应的值。此处的时间数据采用离散单位,因为 Time
列中给出了 int 数据类型。在此数据框中,时间间隔是不规则的,描述了 Event
列中给出的某些事件。必须绘制的值在 Values
列中。
data = {'Time':[21,22,23,24,25,26,27,28,29,30,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10],
'Event':[8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3],
'Values':[10,15,23,17,18,26,24,30,35,42,44,42,38,36,34,30,27,25,27,24,1,0,2,3,5,26,30,40,42,50]}
data_df = pd.DataFrame(data)
data_df
使用以下代码,我能够根据事件的时间值获取按事件分隔的图表:
fig = px.line(data_df,
x='Time',
y='Values',
color='Event',
facet_col = 'Event',
facet_col_wrap=1
)
fig.update_xaxes(matches=None, showticklabels = True)
fig.show()
输出:
现在,我很好奇是否有可能以某种方式将这些图合并到具有标准化 x 轴的单个图中。时间值下限 = 0。时间值上限 = 所有事件的最大时间间隔。基本上 x 轴应该足够大以容纳所有图形。
期望的输出:
Time
值的列,然后绘制单个图形。在这里,我很好奇是否可以避免这种情况。如有任何相关信息,我们将不胜感激。
- 已使用 pandas 将 Time 变基为每个 Event[=22] 的序列=]
- plotly 然后直截了当
import pandas as pd
import plotly.express as px
# fmt: off
data = {'Time':[21,22,23,24,25,26,27,28,29,30,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10],
'Event':[8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3],
'Values':[10,15,23,17,18,26,24,30,35,42,44,42,38,36,34,30,27,25,27,24,1,0,2,3,5,26,30,40,42,50]}
# fmt: on
data_df = pd.DataFrame(data)
px.line(
data_df.groupby("Event").apply(lambda d: d.assign(Time=range(1, len(d)+1, 1))),
x="Time",
y="Values",
color="Event",
)