import gradio as gr import pandas as pd # Vehicle telemetry data data = [{"seq":0,"time":2997,"rpm":820,"speed":0,"coolant_temp":90},{"seq":1,"time":3007,"rpm":841,"speed":0,"coolant_temp":90},{"seq":2,"time":3017,"rpm":762,"speed":0,"coolant_temp":90},{"seq":3,"time":3027,"rpm":783,"speed":0,"coolant_temp":90},{"seq":4,"time":3037,"rpm":804,"speed":0,"coolant_temp":90},{"seq":5,"time":3047,"rpm":825,"speed":0,"coolant_temp":90},{"seq":6,"time":3057,"rpm":846,"speed":0,"coolant_temp":90},{"seq":7,"time":3068,"rpm":767,"speed":0,"coolant_temp":90},{"seq":8,"time":3078,"rpm":788,"speed":0,"coolant_temp":90},{"seq":9,"time":3088,"rpm":809,"speed":0,"coolant_temp":90},{"seq":10,"time":3098,"rpm":830,"speed":0,"coolant_temp":90},{"seq":11,"time":3108,"rpm":751,"speed":0,"coolant_temp":90},{"seq":12,"time":3118,"rpm":772,"speed":0,"coolant_temp":90},{"seq":13,"time":3128,"rpm":800,"speed":20,"coolant_temp":90},{"seq":14,"time":3138,"rpm":821,"speed":20,"coolant_temp":90},{"seq":15,"time":3148,"rpm":842,"speed":20,"coolant_temp":90},{"seq":16,"time":3158,"rpm":763,"speed":20,"coolant_temp":90},{"seq":17,"time":3168,"rpm":784,"speed":20,"coolant_temp":90},{"seq":18,"time":3178,"rpm":805,"speed":20,"coolant_temp":90},{"seq":19,"time":3188,"rpm":826,"speed":20,"coolant_temp":90},{"seq":20,"time":3198,"rpm":847,"speed":20,"coolant_temp":90},{"seq":21,"time":3208,"rpm":768,"speed":20,"coolant_temp":90},{"seq":22,"time":3218,"rpm":796,"speed":20,"coolant_temp":90},{"seq":23,"time":3228,"rpm":817,"speed":20,"coolant_temp":90},{"seq":24,"time":3238,"rpm":838,"speed":20,"coolant_temp":90},{"seq":25,"time":3248,"rpm":759,"speed":20,"coolant_temp":90},{"seq":26,"time":3258,"rpm":808,"speed":20,"coolant_temp":90},{"seq":27,"time":3269,"rpm":750,"speed":40,"coolant_temp":90},{"seq":28,"time":3279,"rpm":785,"speed":40,"coolant_temp":90},{"seq":29,"time":3289,"rpm":806,"speed":40,"coolant_temp":90},{"seq":30,"time":3299,"rpm":841,"speed":40,"coolant_temp":90},{"seq":31,"time":3309,"rpm":776,"speed":40,"coolant_temp":90},{"seq":32,"time":3319,"rpm":797,"speed":40,"coolant_temp":90},{"seq":33,"time":3329,"rpm":832,"speed":40,"coolant_temp":90},{"seq":34,"time":3339,"rpm":753,"speed":40,"coolant_temp":90},{"seq":35,"time":3349,"rpm":774,"speed":40,"coolant_temp":90},{"seq":36,"time":3359,"rpm":809,"speed":40,"coolant_temp":90},{"seq":37,"time":3369,"rpm":830,"speed":40,"coolant_temp":90},{"seq":38,"time":3379,"rpm":751,"speed":40,"coolant_temp":90},{"seq":39,"time":3389,"rpm":772,"speed":40,"coolant_temp":90},{"seq":40,"time":3399,"rpm":800,"speed":0,"coolant_temp":90},{"seq":41,"time":3409,"rpm":821,"speed":0,"coolant_temp":90},{"seq":42,"time":3419,"rpm":842,"speed":0,"coolant_temp":90},{"seq":43,"time":3429,"rpm":763,"speed":0,"coolant_temp":90},{"seq":44,"time":3439,"rpm":784,"speed":0,"coolant_temp":90},{"seq":45,"time":3449,"rpm":805,"speed":0,"coolant_temp":90},{"seq":46,"time":3459,"rpm":826,"speed":0,"coolant_temp":90},{"seq":47,"time":3469,"rpm":847,"speed":0,"coolant_temp":90},{"seq":48,"time":3480,"rpm":768,"speed":0,"coolant_temp":90},{"seq":49,"time":3490,"rpm":789,"speed":0,"coolant_temp":90},{"seq":50,"time":3500,"rpm":810,"speed":0,"coolant_temp":90},{"seq":51,"time":3510,"rpm":831,"speed":0,"coolant_temp":90},{"seq":52,"time":3520,"rpm":752,"speed":0,"coolant_temp":90},{"seq":53,"time":3530,"rpm":773,"speed":0,"coolant_temp":90},{"seq":54,"time":3540,"rpm":794,"speed":0,"coolant_temp":90},{"seq":55,"time":3550,"rpm":815,"speed":0,"coolant_temp":90},{"seq":56,"time":3560,"rpm":836,"speed":0,"coolant_temp":90},{"seq":57,"time":3570,"rpm":757,"speed":20,"coolant_temp":90},{"seq":58,"time":3580,"rpm":778,"speed":20,"coolant_temp":90},{"seq":59,"time":3590,"rpm":799,"speed":20,"coolant_temp":90},{"seq":60,"time":3600,"rpm":820,"speed":20,"coolant_temp":90},{"seq":61,"time":3610,"rpm":841,"speed":20,"coolant_temp":90},{"seq":62,"time":3620,"rpm":762,"speed":20,"coolant_temp":90},{"seq":63,"time":3630,"rpm":783,"speed":20,"coolant_temp":90},{"seq":64,"time":3640,"rpm":804,"speed":20,"coolant_temp":90},{"seq":65,"time":3650,"rpm":825,"speed":20,"coolant_temp":90},{"seq":66,"time":3660,"rpm":846,"speed":20,"coolant_temp":90},{"seq":67,"time":3670,"rpm":767,"speed":20,"coolant_temp":90},{"seq":68,"time":3680,"rpm":788,"speed":20,"coolant_temp":90},{"seq":69,"time":3691,"rpm":809,"speed":20,"coolant_temp":90},{"seq":70,"time":3701,"rpm":830,"speed":20,"coolant_temp":90},{"seq":71,"time":3711,"rpm":751,"speed":20,"coolant_temp":90},{"seq":72,"time":3721,"rpm":772,"speed":20,"coolant_temp":90},{"seq":73,"time":3731,"rpm":793,"speed":40,"coolant_temp":90},{"seq":74,"time":3741,"rpm":814,"speed":40,"coolant_temp":90},{"seq":75,"time":3751,"rpm":835,"speed":40,"coolant_temp":90},{"seq":76,"time":3761,"rpm":756,"speed":40,"coolant_temp":90},{"seq":77,"time":3771,"rpm":777,"speed":40,"coolant_temp":90},{"seq":78,"time":3781,"rpm":798,"speed":40,"coolant_temp":90},{"seq":79,"time":3791,"rpm":819,"speed":40,"coolant_temp":90},{"seq":80,"time":3801,"rpm":840,"speed":40,"coolant_temp":90},{"seq":81,"time":3811,"rpm":761,"speed":40,"coolant_temp":90},{"seq":82,"time":3821,"rpm":782,"speed":40,"coolant_temp":90},{"seq":83,"time":3831,"rpm":803,"speed":40,"coolant_temp":90},{"seq":84,"time":3841,"rpm":824,"speed":40,"coolant_temp":90},{"seq":85,"time":3851,"rpm":845,"speed":40,"coolant_temp":90},{"seq":86,"time":3861,"rpm":766,"speed":40,"coolant_temp":90},{"seq":87,"time":3871,"rpm":787,"speed":40,"coolant_temp":90},{"seq":88,"time":3881,"rpm":808,"speed":40,"coolant_temp":90},{"seq":89,"time":3891,"rpm":829,"speed":40,"coolant_temp":90},{"seq":90,"time":3901,"rpm":750,"speed":0,"coolant_temp":90},{"seq":91,"time":3912,"rpm":771,"speed":0,"coolant_temp":90},{"seq":92,"time":3922,"rpm":792,"speed":0,"coolant_temp":90},{"seq":93,"time":3932,"rpm":813,"speed":0,"coolant_temp":90},{"seq":94,"time":3942,"rpm":834,"speed":0,"coolant_temp":90},{"seq":95,"time":3952,"rpm":755,"speed":0,"coolant_temp":90},{"seq":96,"time":3962,"rpm":776,"speed":0,"coolant_temp":90},{"seq":97,"time":3972,"rpm":797,"speed":0,"coolant_temp":90},{"seq":98,"time":3982,"rpm":818,"speed":0,"coolant_temp":90},{"seq":99,"time":3992,"rpm":839,"speed":0,"coolant_temp":90}] # Create DataFrame df = pd.DataFrame(data) # Create long format DataFrame with all three metrics df_combined = pd.DataFrame({ 'time': list(df['time']) + list(df['time']) + list(df['time']), 'value': list(df['rpm']) + list(df['speed']) + list(df['coolant_temp']), 'metric': ['RPM'] * len(df) + ['Speed'] * len(df) + ['Coolant Temp'] * len(df) }) with gr.Blocks() as demo: gr.Markdown("## Vehicle Telemetry Data") gr.LinePlot( value=df_combined, x="time", y="value", color="metric", x_title="Time (ms)", y_title="Value", title="Vehicle Telemetry", colors_in_legend=["RPM", "Speed", "Coolant Temp"], color_map={"RPM": "red", "Speed": "blue", "Coolant Temp": "green"} ) demo.launch()