如何用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
相关产品推荐
相关产品推荐

