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

如何用Plotly Express为不同样本设置对应标记符号?

修正Plotly散点图样本标记样式问题

你的代码核心问题是未指定symbol参数关联样本类型列,仅设置symbol_sequence无法让Plotly根据样本类型切换标记样式。

以下是修正后的代码:

import plotly.express as px
from sklearn.decomposition import PCA  # 补充导入PCA,原代码可能遗漏

X_meth_kipan = meth_450_10k_kipan.iloc[:,9:-1].dropna(axis=1)

pca = PCA(n_components=2)
components = pca.fit_transform(X_meth_kipan)

# 关键修改:添加symbol参数关联type列,确保标记样式与样本类型绑定
fig = px.scatter(components, x=0, y=1, 
                 color=meth_450_10k_kipan["type"], 
                 color_discrete_sequence=["red", "green"], 
                 symbol=meth_450_10k_kipan["type"],  # 新增:关联样本类型
                 symbol_sequence=["square", "circle"],  # 对应tumor和normal的标记
                 width=600, height=600)

fig.update_xaxes(automargin=True)
fig.update_yaxes(automargin=True)
fig.update_layout({'plot_bgcolor': 'rgb(240,240,240)','paper_bgcolor': 'rgb(240,240,240)',})
fig.show()

额外优化建议

如果不确定type列中tumor和normal的默认顺序,建议用symbol_map明确映射标记样式,避免顺序错误:

# 定义明确的类型-标记映射
symbol_map = {"tumor": "square", "normal": "circle"}

fig = px.scatter(components, x=0, y=1, 
                 color=meth_450_10k_kipan["type"], 
                 color_discrete_sequence=["red", "green"], 
                 symbol=meth_450_10k_kipan["type"],
                 symbol_map=symbol_map,  # 使用映射替代sequence
                 width=600, height=600)

这样修改后,tumor样本会显示红色方形,normal样本会显示绿色圆形,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:54:18