【发布时间】:2021-06-30 05:33:04
【问题描述】:
我有一个监听器,它以以下方式不断记录收到的消息 --
class Listener:
recorded = defaultdict(lambda: defaultdict(list))
def on_message_received(self, msg):
self.recorded[msg.id]["timestamp"].append(msg.timestamp)
self.recorded[msg.id]["data"].append(msg.data)
可以假设时间戳和数据都是浮点数。
对于单个 id,我可以使用 --
绘制数据import altair as alt
import pandas as pd
import streamlit as st
listener = Listener()
plt, frame = st.empty(), st.empty()
def plot():
c = listener.recorded.copy()
df = pd.DataFrame.from_dict(c[100]) # using id: 100 as an example
chart = alt.Chart(df).mark_line().encode(x="timestamp", y="data")
frame.write(df)
plt.altair_chart(chart)
这会产生一个数据框和图表:
所以我的问题是,我将如何备份一个关卡并从字典 listener.recorded 生成一个数据框/绘图,以便每个唯一的 id 都正确地绘制一个图例?我自己似乎无法完全到达那里......
【问题讨论】:
-
如果您可以使用索引访问
c,那么我相信您可以循环遍历它并在每次迭代期间附加到数据帧。
标签: python pandas altair streamlit