如何为Plotly choropleth添加FIPS详情悬浮标签?
解决方案:在Plotly Figure Factory choropleth地图中添加FIPS悬浮详情
要在地图悬浮时展示FIPS等自定义信息,不需要改变现有列表传参的逻辑,直接通过以下两种方式实现:
方法一:创建地图时直接传入自定义文本参数
ff.create_choropleth支持text参数,你可以提前构造好每个区域的悬浮提示内容,传入这个参数即可。修改后的完整代码如下:
import plotly.figure_factory as ff import numpy as np import pandas as pd df_sample = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/laucnty16.csv') df_sample['State FIPS Code'] = df_sample['State FIPS Code'].apply(lambda x: str(x).zfill(2)) df_sample['County FIPS Code'] = df_sample['County FIPS Code'].apply(lambda x: str(x).zfill(3)) df_sample['FIPS'] = df_sample['State FIPS Code'] + df_sample['County FIPS Code'] # 构造悬浮提示文本,可自定义显示内容 hover_texts = df_sample.apply(lambda row: ( f"FIPS编码: {row['FIPS']}<br>" f"地区: {row['County Name']}, {row['State']}<br>" f"失业率: {row['Unemployment Rate (%)']}%" ), axis=1).tolist() colorscale = ["#f7fbff", "#ebf3fb", "#deebf7", "#d2e3f3", "#c6dbef", "#b3d2e9", "#9ecae1", "#85bcdb", "#6baed6", "#57a0ce", "#4292c6", "#3082be", "#2171b5", "#1361a9", "#08519c", "#0b4083", "#08306b" ] endpts = list(np.linspace(1, 12, len(colorscale) - 1)) fips = df_sample['FIPS'].tolist() values = df_sample['Unemployment Rate (%)'].tolist() fig = ff.create_choropleth( fips=fips, values=values, scope=['usa'], binning_endpoints=endpts, colorscale=colorscale, show_state_data=False, show_hover=True, text=hover_texts, # 新增:传入自定义悬浮文本 asp = 2.9, title_text = 'USA by Unemployment %', legend_title = '% unemployed' ) fig.layout.template = None fig.show()
方法二:生成地图后修改悬浮提示内容
如果已经生成了figure对象,可以直接修改对应trace的hovertext属性,替换默认的悬浮信息:
# (前面的代码保持不变,到生成fig之后) fig = ff.create_choropleth( fips=fips, values=values, scope=['usa'], binning_endpoints=endpts, colorscale=colorscale, show_state_data=False, show_hover=True, asp = 2.9, title_text = 'USA by Unemployment %', legend_title = '% unemployed' ) # 修改悬浮提示文本 fig.data[0].hovertext = df_sample.apply(lambda row: ( f"FIPS编码: {row['FIPS']}<br>" f"地区: {row['County Name']}, {row['State']}<br>" f"失业率: {row['Unemployment Rate (%)']}%" ), axis=1).tolist() # 可选:设置hoverinfo确保显示自定义文本 fig.data[0].hoverinfo = 'text' fig.layout.template = None fig.show()
两种方法都能实现悬浮时显示FIPS编码及其他你需要的信息,你可以根据需求选择其中一种。
内容的提问来源于stack exchange,提问作者PBI1910
相关产品推荐
相关产品推荐

