import pandas as pd
import plotly.graph_objs as go
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))
_ = []
for i in range(100):
_.append( random.choice([1,2,3]))
# _.append( random.choice(["A","B","C"]))
df["type"] = _
fig = px.scatter_3d(data_frame = df, x="x", y="y", z="z", color="type")
fig.show()
它自动为“types - 1,2,3”生成颜色条
但是如果我将“类型”更改为[“A”,“B”,“C”],它会显示如下。
它会自动生成图例,而不是颜色条。
我想为 [1,2,3] 创建图例,而不是颜色条。如下图。
但我找不到它的选项。
@PaulH 回答了它。
我将数据类型更改为“对象”并按顺序制作图例。
代码如下。
df["type"]=df["type"].astype("object")
fig = px.scatter_3d(data_frame = df, x="x", y="y", z="z", color="type",
category_orders={"type" : [1,2,3]}) # this line is for ordered legend.