繁体   English   中英

Python plotly scatter_geo 修改 hover 数据

[英]Python plotly scatter_geo modify hover data

我想修改 hover 数据并将其留给例如bins数据。 我做了以下代码,但是hover_data参数不起作用。 修改haver数据的方法是什么?

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", hover_data=(['bins']))

fig.add_trace(go.Scattergeo(lon=df["longitude"],
              lat=df["latitude"],
              text=df["data"],
              textposition="middle center",
              mode='text',
              showlegend=False))
fig.show()

您可以在下面提到 scatter_geo 的 hover_data 参数。

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", hover_data={'longitude':False,'latitude':False,'data':False})

fig.add_trace(go.Scattergeo(lon=df["longitude"],
              lat=df["latitude"],
              text=df["data"],
              textposition="middle center",
              mode='text',
              showlegend=False))


fig.show()

在 hover_data 中将列名设置为 False 将从 hover_data 中删除该列名。 希望这能回答你的问题。

使用接受的答案,我发现了以下错误(类似于@Asha Ramprasad 的评论):

RuntimeError: dictionary changed size during iteration

同样,对于以下内容:

Python 3.7.6 (default, Jan  8 2020, 13:42:34) 
>>> import plotly
>>> plotly.__version__
'4.4.1'

我通过传递我想要的 dataframe 列的列表而不是字典来删除错误:

hover_data = [df["whatever I want displayed"],df["other thing to display"]]

这种 plotly 行为对我来说似乎是一个错误。 请注意,这不允许删除列,只能添加。

使用 Hover 模板: hover 模板在这种情况下可能会很好地工作:

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

fig.update_traces(customdata=df.bins)
fig.update_traces(hovertemplate='Bins: %{customdata}<extra></extra>')

有关在 hover 模板中使用customdata的信息,请参阅此处此处

customdata – 为每个数据分配额外的数据。 这在收听 hover、点击和选择事件时可能很有用。 请注意,“分散”跟踪还会在标记 DOM 元素中附加自定义数据项

更新:使用px.scatter_geo中的color选项将对结果图的数据进行分组,以便自定义数据不再与下划线customdata数据对齐。 这通常是我放弃 plotly express 并使用 plotly go 的点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM