我有一个用plotly 绘制情节的脚本
import plotly.graph_objects as go
import pandas as pd
# Create a DataFrame with X, Y, and f values
df= pd.DataFrame({'x': [1, 2, 3, 4, 5], 'y': [10, 12, 5, 8, 6], 'x2': [1, 3, 4, 5, 7],'y2':[2,5,3,1,8],'f':[1,2,3,4,5]})
hover_text1 = df.apply(lambda row: f'({row["x"]},{row["y"]}) at {row["f"]}', axis=1)
fig=go.Figure()
fig.add_trace(go.Scatter(x=df.x, y= df.y, mode='lines+markers', text=hover_text1, name='data1', line=dict(color='orange',width=linewidth),marker=dict(symbol='circle', size=markersize),hoverinfo='text'))
fig.add_trace(go.Scatter(x=df.x2, y= df.y2, mode='lines+markers', name='data2', line=dict(color='green',width=linewidth),marker=dict(symbol='circle', size=markersize)))
# Customize the layout or add additional settings as needed
fig.update_layout(title='Plotly Scatter Plot', xaxis_title='X-axis', yaxis_title='Y-axis', showlegend=True)
# Show the plot
fig.show()
不幸的是,我无法捕获悬停的图像,但如果你运行它,你会看到有两条线(一条橙色,另一条绿色) 当您将鼠标悬停在橙色的上方时,您会收到“(X,Y) at f”消息,这很好。
但是当您将鼠标悬停在绿色曲线上时,您会得到默认的“(X,Y)”,然后以反色显示曲线的名称。但是,一旦您自定义悬停消息,该名称就会消失(如橙色的)
我的问题是,如何将悬停消息自定义为橙色消息,但又不会丢失带有数据名称的漂亮反色消息?
编辑:澄清 为了清楚起见,我将
hover_text2
的名称更改为 hover_text1
(因为它代表 data1
)
当鼠标悬停在
data2
时,我看到 (X,Y) 和名称“data2”呈反色
我想看到的是:
data1
中,我想看到 f 处的 (X,Y),然后是反色的漂亮的“data1”名称(如您在 data2 中看到的那样)也许我误解了这个问题,但你还没有定义一个hover_text1变量
hover_text1 = df.apply(lambda row: f'({row["x"]},{row["y"]}) at {row["f"]}', axis=1)
hovertemplate
:
fig.add_trace(go.Scatter(x=df.x, y= df.y, mode='lines+markers', text=hover_text1,
name='data1', line=dict(color='orange',width=linewidth),
marker=dict(symbol='circle', size=markersize),
hovertemplate='%{text}<extra>%{fullData.name}</extra>'))
%{text}
指通过 text
关键字分配的数据,%{fullData.name}
指迹线名称。<extra></extra>
是“辅助框”,是悬停部分,跟踪名称通常以对比色显示(标签必须设置为空才能完全隐藏辅助框)。请注意,设置
hoverinfo='text'
是 hovertemplate=%{text}<extra></extra>
的快捷方式。
另请参阅 使用悬停模板自定义悬停文本