[英]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.