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

使用Dash/Plotly绘制分类散点图遇到异常问题求助

问题分析与解决方案

看起来你代码里的核心问题出在X轴的参数设置上——你把四个Well的列打包成列表传给x参数,这会让Plotly无法正确匹配X和Y轴的维度,自然会输出异常结果。

让我拆解一下问题:你想要的是X轴为离散的孔位类别(Well A/D),每个类别对应一组时间点的散点。但当前代码里,x = [df['Well A'], df['Well B'],df['Well C'],df['Well D']]会把四个列的所有数据合并成一个多维列表,和Y轴的df['Time Point']长度完全不匹配,Plotly根本不知道怎么对应这些数据。

下面给你两种可行的解决方案:

方案1:转换数据为长格式(推荐)

把宽格式的DataFrame转换成长格式(用pandas.melt),这样每一行对应一个孔位的时间点数据,Plotly就能轻松识别X/Y的对应关系了。

假设你的DataFrame结构是类似这样的宽格式:

Time PointWell AWell BWell CWell D
15372
26483

对应的代码如下:

import pandas as pd
import plotly.graph_objects as go

# 读取数据
df = pd.read_excel(r'file.xlsx')

# 转换为长格式:保留Time Point作为标识列,把所有Well列转成类别和数值
df_melted = df.melt(
    id_vars='Time Point',
    var_name='Well Position',
    value_name='Element Count'
)

# 创建散点图
fig = go.Figure()
fig.add_trace(go.Scatter(
    x=df_melted['Well Position'],
    y=df_melted['Time Point'],
    mode='markers',
    marker=dict(size=12, opacity=0.8)
))

# 美化图表布局
fig.update_layout(
    title='Element Count vs Time Point by Well',
    xaxis_title='Well Position',
    yaxis_title='Time Point',
    showlegend=False
)

fig.show()

方案2:为每个孔位单独添加Trace

如果你不想修改原始数据格式,可以为每个Well单独创建一个散点Trace,手动指定X轴为固定的孔位名称,Y轴为对应的时间点:

import pandas as pd
import plotly.graph_objects as go

df = pd.read_excel(r'file.xlsx')

fig = go.Figure()

# 遍历每个孔位列,逐个添加散点
for well_name in ['Well A', 'Well B', 'Well C', 'Well D']:
    fig.add_trace(go.Scatter(
        x=[well_name] * len(df),  # 每个时间点对应同一个孔位名称
        y=df['Time Point'],
        mode='markers',
        name=well_name,  # 图例显示孔位名称
        marker=dict(size=12)
    ))

# 调整布局
fig.update_layout(
    title='Element Count vs Time Point by Well',
    xaxis_title='Well Position',
    yaxis_title='Time Point'
)

fig.show()

这两种方案都能帮你得到预期的分类散点图,如果你的DataFrame结构和我假设的有差异(比如Time Point是索引),只需要微调melt的参数或者遍历的列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:17:42