不使用pandas的Python环境中如何修改Plotly数据系列标签
Plotly 纯numpy输入下自定义折线图系列标签
wide_variable_*命名的由来
这是Plotly Express处理宽格式输入的默认命名逻辑:当你没有传入pandas DataFrame、直接给y参数传入多个数组/列表时,Plotly无法自动获取每个序列的语义名称,就会按传入顺序给每个序列生成wide_variable_0、wide_variable_1这类默认标识,前缀仅用来标记这些序列是从宽格式输入中拆分出的独立变量,没有其他特殊含义。
无pandas依赖的解决方法
两种方法都可以同时修改图例、鼠标悬停弹窗内的系列显示名,按需选择即可:
方法1:调用绘图函数时直接配置名称映射
在px.line中传入labels参数,把自动生成的默认序列名映射为你需要的自定义名称,写法最简单:fig = px.line( x=x, y=[arrayA, arrayB, arrayC], labels={ "wide_variable_0": "A序列自定义名", "wide_variable_1": "B序列自定义名", "wide_variable_2": "C序列自定义名", "value": "Y轴指标名", # 可选,自定义Y轴显示文字 "x": "X轴维度名" # 可选,自定义X轴显示文字 } ) fig.show()配置后Plotly会自动替换所有位置的默认名称,不需要额外调整其他参数。
方法2:遍历trace动态修改名称
如果序列数量是动态变化的,不想硬编码wide_variable_*的默认key,可以在生成画布后,按数组传入顺序遍历每个序列修改属性:fig = px.line(x=x, y=[arrayA, arrayB, arrayC]) # 按传入y的数组顺序排列自定义名称即可 series_names = ["A序列自定义名", "B序列自定义名", "C序列自定义名"] for idx, trace in enumerate(fig.data): trace.name = series_names[idx] # 同步更新悬停弹窗模板,避免hover时显示旧名称 trace.hovertemplate = f"{series_names[idx]}<br>x: %{{x}}<br>y: %{{y}}<extra></extra>" fig.show()
内容的提问来源于stack exchange,提问作者Adam Smith
相关产品推荐
相关产品推荐

