python - 自定义悬停以按颜色显示散点图

标签 python pandas plotly

我正在使用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 中没有相同的描述。 我该如何解决这个问题?

最佳答案

使用图形对象而不是绘图表达

  • 主要技术是将变量转换为数字
  • 使用了唯一值数组中的索引
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])}))

关于python - 自定义悬停以按颜色显示散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67525093/

相关文章:

python - 使用 Python 将字典打印到 CSV 文件

pandas - 转换 Pandas 数据框 : un pivot

python - 从 CSV 文件的字符串列中删除新行

python - Plotly:如何制作 3D 堆叠直方图?

python - Graphviz:Python 中记录标签的边 (gv)

python - 通过平均多个单元格来简化矩阵

python - 如何按月份和年份输入过滤具有日期时间索引的数据框? Pandas

python - map 上的颜色效果(pythonplotly)

python - 在 Plotly 中为同一实体绘制 2 个不同的数据源

python - 仅在 matplotlib 中的大陆上绘制