You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly创建以列名为X轴、列数据为Y轴的折线动画?

解决方案

你的核心问题是当前DataFrame为宽格式,而要实现X轴为THD系列列名的折线图,需先将数据转换为长格式,以下是具体实现步骤:

1. 宽格式转长格式

先提取所有THD开头的列,利用melt方法将宽表转换为适合绘图的长表:

import pandas as pd
import plotly.express as px

# 提取所有THD相关列
thd_cols = [col for col in df_MM_SPEC.columns if col.startswith('THD_')]

# 转换为长格式,保留关键分组标识列
df_long = df_MM_SPEC.melt(
    id_vars=['Device_ID', 'Die_Version', 'Temp(deg)', 'sup(V)', 'freq', 'sensitivity'],
    value_vars=thd_cols,
    var_name='THD_Level',  # 对应X轴的列名
    value_name='THD_Value' # 对应Y轴的数值
)

2. 绘制目标折线图

转换完成后,即可用Plotly Express直接绘制,X轴为THD列名,Y轴为对应数值,还可根据freq或sup(V)区分不同参数组的折线:

fig = px.line(
    df_long,
    x='THD_Level',
    y='THD_Value',
    color='freq',  # 用频率区分不同折线,可替换为sup(V)
    symbol='sup(V)', # 用符号区分供电电压
    title='不同参数下的THD变化趋势',
    labels={'THD_Level': 'THD测试档位', 'THD_Value': 'THD数值'}
)

# 调整X轴标签角度,避免重叠
fig.update_layout(xaxis_tickangle=-45)
fig.show()

原代码失效原因

你之前使用px.Constant('col')作为X轴,会把所有数据映射到同一个X坐标点,无法区分不同THD列的类别。只有将宽表转成长表,让每个THD列名作为独立的X轴类别,才能实现需求。


内容的提问来源于stack exchange,提问作者Confused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:20:30