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

Plotly中如何将整数型变量的自动色条改为图例?

解决Plotly 3D散点图整数分类变量显示图例而非色条的问题

要让整数类型的type变量(取值1、2、3)生成图例而非色条,核心是让Plotly把这些整数识别为离散分类而非连续数值,下面是两种简单可行的方法:

方法一:将整数转换为字符串类型

直接把生成的整数列表转成字符串,或者在生成时就用字符串取值:

import pandas as pd
import plotly.express as px
import numpy as np
import random

df = pd.DataFrame()
df["x"] = np.sin(np.arange(100))
df["y"] = np.sin(np.arange(-100,100,2))
df["z"] = 2*np.sin(np.arange(100))

# 生成字符串类型的分类值
type_list = []
for i in range(100):
    type_list.append(random.choice(["1","2","3"]))  # 直接用字符串
df["type"] = type_list

# 或者先生成整数再转字符串:
# type_list = [random.choice([1,2,3]) for _ in range(100)]
# df["type"] = pd.Series(type_list).astype(str)

fig = px.scatter_3d(data_frame=df, x="x", y="y", z="z", color="type")
fig.show()

方法二:将列转换为Pandas分类类型

利用Pandas的Categorical类型标记该列为离散分类:

import pandas as pd
import plotly.express as px
import numpy as np
import random

df = pd.DataFrame()
df["x"] = np.sin(np.arange(100))
df["y"] = np.sin(np.arange(-100,100,2))
df["z"] = 2*np.sin(np.arange(100))

type_list = [random.choice([1,2,3]) for _ in range(100)]
df["type"] = pd.Categorical(type_list)  # 标记为分类类型

fig = px.scatter_3d(data_frame=df, x="x", y="y", z="z", color="type")
fig.show()

原理说明

Plotly Express会自动根据数据类型判断变量类型:

  • 整数/浮点数默认被视为连续数值,因此生成色条展示数值梯度
  • 字符串、Pandas分类类型会被视为离散分类,因此生成图例区分不同类别

通过上述两种方式修改数据类型后,Plotly就会为1、2、3生成对应的图例项,而非色条。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:03:22