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

Plotly绘制传感器二进制数据时部分Y轴倒置问题求助

问题原因及解决办法

可能原因

  1. 数据类型不统一:出现倒置的4列可能是字符串类型(如"0"/"1"),而非数值型int/float。Plotly对字符串类别默认按字典序排序,会将"0"放在"1"上方,导致视觉上倒置。
  2. 数据值反向存储:传感器采集时这4列的0和1本身就是反向的(比如输出电平与其他列相反),直接绘图就会呈现倒置效果。
  3. Plotly自动轴范围调整:虽然全局设置了yaxis=dict(range=[0,1]),但如果某列数据只有单一值(比如全0或全1),Plotly可能会自动调整轴范围,导致显示异常。

解决办法

方法1:统一数据类型

检查并转换问题列为数值型:

# 替换为实际的问题列名
problem_cols = ["col1", "col2", "col3", "col4"]
df_test[problem_cols] = df_test[problem_cols].astype(int)

方法2:反转问题列的y值

如果确认数据本身是反向的,绘图时直接取反:

# 替换为实际的问题列名
problem_cols = ["col1", "col2", "col3", "col4"]

for col in df_test.columns:
    y_data = 1 - df_test[col] if col in problem_cols else df_test[col]
    fig.add_trace(
        go.Scatter(
            x=df_test.index, 
            y=y_data, 
            name=col,
            visible="legendonly",
            line_shape='hv'))

方法3:强制锁定y轴范围与方向

在update_layout中明确设置y轴属性,避免自动调整:

fig.update_layout(
    autosize=False,
    width=1550,
    height=800,
    xaxis_title=df_test.index.name,
    yaxis_title="State",
    yaxis=dict(
        range=[0, 1],
        autorange=False,  # 禁止自动调整范围
        autorange_reversed=False  # 强制不反转轴方向
    )
)

前置排查步骤

先确认数据本身是否正常:

# 替换为实际的问题列、正常列名
problem_cols = ["col1", "col2", "col3", "col4"]
normal_cols = ["col5", "col6"]

print("问题列数据:")
print(df_test[problem_cols].head())
print("\n正常列数据:")
print(df_test[normal_cols].head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:43:14