【问题标题】:Python_Function for customdata hover in plotly lib用于自定义数据悬停在 plotly lib 中的 Python_Function
【发布时间】:2020-05-31 11:15:51
【问题描述】:

在下面的代码中,我尝试使用 customdata 来制作悬停模板,但在这种情况下,在可视化上它只显示第一行的数据。我认为应该有功能,但不知道如何实现。

import plotly.express as px
import plotly.graph_objs as go
import pandas as pd

rows=[['501-600','15','122.58333','45.36667'],
      ['till 500','4','12.5','27.5'],
      ['more 1001','41','-115.53333','38.08'],
      ]

colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
df = df.astype({"data": int})

fig=px.scatter_geo(df,lon='longitude', lat='latitude',
                      color='bins',
                      opacity=0.5,
                      size='data',
                      projection="natural earth")

new_customdata = df.loc[:,('bins', 'data')]
fig.update_traces(go.Scattergeo(
customdata=new_customdata,
hovertemplate="<b>%{customdata[0]} </b><br><br>" + \
              "blablabla: %{customdata[1]: .3f}<extra></extra>"))

fig.show()

【问题讨论】:

  • 你的意思是只显示第一行的数据?您希望看到什么,而您看到的是什么?我正在运行你的代码,它似乎工作正常。
  • 我用图片更新了我的答案。悬停中的红色标记数据必须是 - 直到 500 和 4。因此,如果您查看 df,则悬停反射中​​的数据从 df 的顶行开始随处可见。

标签: python function hover plotly custom-data-type


【解决方案1】:

我相信这可以满足您的需求:

rows=[['501-600','15','122.58333','45.36667'],
      ['till 500','4','12.5','27.5'],
      ['more 1001','41','-115.53333','38.08'],
      ]

colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
df = df.astype({"data": int})

fig = go.Figure(data=go.Scattergeo(
    lon = df['longitude'],
    lat = df['latitude'],
    mode = 'markers', 
    marker_color = df.index, 
    marker_size=df['data'], 
    customdata = df, 

    hovertemplate="<b>%{customdata[0]} </b><br><br>blablabla: %{customdata[1]: .3f}<extra></extra>"

))

fig.show()

结果是(每个项目都有不同的悬停文本):

【讨论】:

  • "marker_color = df.index" 可以解决问题。我将它添加到解决方案中,
猜你喜欢
  • 2021-08-14
  • 2018-09-04
  • 2018-09-19
  • 2021-11-24
  • 2014-10-24
  • 2020-12-18
  • 1970-01-01
  • 2020-09-07
  • 2020-03-22
相关资源
最近更新 更多