Plotly二维散点图中z数据悬浮提示格式的修改方法咨询
Plotly二维散点图中z数据悬浮提示格式的修改方法咨询
嗨,这个问题我之前也碰到过,完全可以实现z数据的悬浮格式修改,不过和你改x、y轴hover格式的方式不太一样哦~
因为这里的“z数据”并不是一个实际的坐标轴,只是作为标记点颜色的映射值,所以没办法像x、y轴那样直接在update_layout里设置对应轴的hoverformat。不过我们可以通过自定义悬浮模板(hovertemplate)来搞定这个需求,下面给你两种常用的实现方式:
方法一:使用Plotly Express时自定义hover模板
如果你是用plotly.express创建的散点图,可以直接通过update_traces来修改悬浮模板,把z数据的格式指定好:
import plotly.express as px import pandas as pd # 模拟你的数据 df = pd.DataFrame({ 'x': [1.2345, 2.3456, 3.4567], 'y': [4.5678, 5.6789, 6.7890], 'z': [7.8901, 8.9012, 9.0123] }) # 创建散点图,color绑定z列 fig = px.scatter(df, x='x', y='y', color='z') # 自定义hover模板,指定z数据的格式为.3r fig.update_traces( hovertemplate='x: %{x:.3r}<br>y: %{y:.3r}<br>z: %{marker.color:.3r}<extra></extra>' ) fig.show()
这里的%{marker.color}就对应你绑定的z列数据,后面的.3r就是你想要的格式化规则。
方法二:使用Graph Objects时自定义hover模板
如果是用plotly.graph_objects手动构建的图表,同样可以在Scatter trace里直接设置hovertemplate,还可以配合customdata来传递z数据:
import plotly.graph_objects as go import pandas as pd df = pd.DataFrame({ 'x': [1.2345, 2.3456, 3.4567], 'y': [4.5678, 5.6789, 6.7890], 'z': [7.8901, 8.9012, 9.0123] }) fig = go.Figure(data=[go.Scatter( x=df['x'], y=df['y'], mode='markers', marker=dict(color=df['z']), # 把z数据放入customdata customdata=df[['z']], # 自定义hover模板,引用customdata里的z并格式化 hovertemplate='x: %{x:.3r}<br>y: %{y:.3r}<br>z: %{customdata[0]:.3r}<extra></extra>' )]) # 你原来的x、y轴hoverformat设置可以保留 fig.update_layout( xaxis=dict(hoverformat='.3r'), yaxis=dict(hoverformat='.3r') ) fig.show()
这样设置之后,悬浮提示里的z数据就会按照你指定的.3r格式显示啦,试一下应该就能解决你的问题~
备注:内容来源于stack exchange,提问作者user17647940
相关产品推荐
相关产品推荐

