[英]Visualise Multiple lines in plotly express plot
我目前正在试验 plotly 快速图表到 plot 多个传感器测量。 我有一个 csv 数据集,我用 pandas 读取它看起来像这样 (df_full_data):
数据在回调图中使用,其中两个下拉字段用作输入以定义年份 (year_value) 以及应在图中显示哪些传感器 (hoved)。
year_data = df_full_data[df_full_data.years == int(year_value)]
filtered_sensor = year_data[year_data['ID'].isin(hoved)]
然后我使用 px.line 到 plot 数据。
figure = px.line(filtered_sensor, x=filtered_sensor['time'], y=filtered_sensor['water_m'], color=filtered_sensor['ID'], title='Sensor Meting')
选择一个 sensorID 时一切正常,但是当我 select 两个传感器时,数据将显示在彼此后面。 这意味着第一个传感器 58 的数据将从 01/01/2019 到 31/12/2010 显示,然后 x 轴将从 01/01/2019 和 plot 传感器 64 的数据再次开始。
我想 plot 这两个图表彼此重叠/彼此重叠,我想这与我如何排序或构建我的熊猫表以及 plotly 将如何表示它有关,但我不知道如何完成这个。 任何想法或提示如何更改它,以便数据将像这样在彼此上方表示:
尝试过我尝试为每个传感器添加跟踪:
fig = go.Figure()
for subset_id, subset in year_data.groupby('ID'):
fig.add_trace(
px.line(
subset,
x=subset['time'],
y=subset['water_m'],
color=subset['ID'],
title=subset_id
).data[0]
)
我认为您正在寻找的是为您的 plot 添加第二条甚至第三条trace
线。
plotly express 文档的片段
fig.add_trace(
go.Scatter(
x=[2, 4],
y=[4, 8],
mode="lines",
line=go.scatter.Line(color="gray"),
showlegend=False)
)
这行得通吗?
import plotly.express as px
import plotly.graph_objects as go
fig = go.Figure()
for subset_id, subset in year_data.groupby('ID'):
fig.add_trace(
px.line(
subset,
x=subset['time'],
y=subset['water_m'],
color=subset['ID'],
title=subset_id
)
)
假设您有一个 dataframe df
,列为: 'id'
、 'time'
、 'air_Pa'
、 'water_m'
和'year'
,代表来自某个过程的时间和压力,以及连续的行索引。 您'time'
格式是第一天,因此 pandas dataframe 和 plotly 图表会将其视为一系列字符串,而不是时间序列,这就是为什么来自不同传感器的图不会叠加。 这可能就是为什么您还需要一个'year'
列,否则您应该能够使用'time'
来分割年度数据。 只需尝试将 dayfirst 日期时间列转换为有效的 pandas 时间戳:
df.time = pandas.to_datetime(df.time,dayfirst = True)
此外,您还可以从 csv 读取已经解析的日期 dayfirst ...
df = pd.read_csv('df.csv', dayfirst=True, parse_dates=True)
......现在你的情节不会叠加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.