如何在Pygal地图中点击国家时显示文本(如首都名称)
解决Pygal世界地图点击显示自定义文本的问题
Pygal默认会把你传入的数值作为点击国家时的提示内容,要替换成自定义文本(比如首都名称),不能直接用str()转换数值,而是要给每个国家传入包含label字段的字典,具体实现如下:
修改后的完整代码
import pygal # 创建世界地图实例 worldmap = pygal.maps.world.World() worldmap.title = 'Countries' # 用字典结构传入每个国家的自定义提示文本 worldmap.add('Countries & Capitals', { 'aq': {'value': 69, 'label': 'No Capital'}, 'cd': {'value': 30, 'label': 'Kinshasa'}, 'de': {'value': 40, 'label': 'Berlin'}, 'eg': {'value': 50, 'label': 'Cairo'}, 'ga': {'value': 45, 'label': 'Libreville'}, 'hk': {'value': 23, 'label': 'Hong Kong'}, 'in': {'value': 0, 'label': 'New Delhi'}, 'jp': {'value': 65, 'label': 'Tokyo'}, 'nz': {'value': 41, 'label': 'Wellington'}, 'kz': {'value': 32, 'label': 'Nur-Sultan'}, 'us': {'value': 66, 'label': 'Washington DC'} }) # 保存并生成SVG文件 worldmap.render_to_file('worldmapresult.svg') print("Success")
关键说明
- 每个国家的取值从单一数字改成了字典,其中:
value:保留原来的数值(Pygal需要数值处理地图元素的渲染逻辑,可根据需求调整或移除,建议保留)label:设置点击时要显示的自定义文本,比如首都名称
- 如果不需要显示数值,只想展示纯文本,可以添加以下配置隐藏数值:
worldmap.tooltip_fancy_mode = False worldmap.value_formatter = lambda x: ''
内容的提问来源于stack exchange,提问作者Drapal
相关产品推荐
相关产品推荐

