我正在使用 plotly 并尝试制作由变量着色的散点图,同时使用另一个变量来指示将鼠标覆盖在特定点上时应显示的文本。 看看我尝试了什么:
df = pd.DataFrame({
'class': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
'coord_x': [4,5,6,3,1,-1,9,0,3.5,2],
'coord_y': [11,32,48,22,12,29,32,54,19,21],
'description':['some description for A', 'something else for A', 'other description for A', 'AAA', 'aaa', 'bbb', 'bbb', 'description for C', 'cccc', 'cc']
})
fig = px.scatter(df, x="coord_x", y="coord_y", color="class")
fig.update_traces(hovertemplate="Hover_text: %{text}",
text=[d for d in df.description.values.tolist()])
fig.show()
代码似乎有效,但它只有悬停有效“A”点,即使“B”和“C”在我的 Pandas DataFrame 中没有相同的描述。 我该如何解决这个问题?
答案 0 :(得分:1)
我相信您可以在函数中添加参数 hover_name
以使其显示每个点:
fig = px.scatter(df, x="coord_x", y="coord_y", color="class",hover_name='description')
例如:
答案 1 :(得分:1)
使用了图形对象而不是情节表达
import plotly.graph_objects as go
df = pd.DataFrame({
'class': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
'coord_x': [4,5,6,3,1,-1,9,0,3.5,2],
'coord_y': [11,32,48,22,12,29,32,54,19,21],
'description':['some description for A', 'something else for A', 'other description for A', 'AAA', 'aaa', 'bbb', 'bbb', 'description for C', 'cccc', 'cc']
})
# color needs to be a number, use index of unique values
go.Figure(data=go.Scatter(x=df.coord_x, y=df.coord_y, hoverinfo="text", text=df.description, mode="markers",
marker={"color":df["class"].apply(lambda v: np.where(v==df["class"].unique())[0][0])}))