使用pygal.maps.world时,是否可以格式化显示国家人口的数字?

时间:2019-03-30 05:44:06

标签: python number-formatting pygal

我正在使用pygal制作一张显示2010年以来世界各国人口的交互式地图。我试图找到一种方法,使该国家的人口显示带有逗号的显示,即10,000,而不是10,000。

What my map currently looks like; you can see how hard the populations are to read.

当我将列表中的数字用于不同人口级别时,我已经尝试使用“ {:,}”。format(x),但这会导致错误。我相信这是因为这会将值更改为字符串。

我还尝试插入一段我在网上找到的代码

 wm.value_formatter = lambda x: "{:,}".format(x).

这不会引起任何错误,但是也不能解决数字的格式问题。我希望有人可能知道内置功能,例如:

wm_style = RotateStyle('#336699')

哪个让我设置配色方案。

下面是我绘制地图的代码的一部分。

wm = World()

wm.force_uri_protocol = "http"

wm_style = RotateStyle('#996699')
wm.value_formatter = lambda x: "{:,}".format(x)
wm.value_formatter = lambda y: "{:,}".format(y)
wm = World(style=wm_style)

wm.title = "Country populations year 2010"
wm.add('0-10 million', cc_pop_low)
wm.add("10m to 1 billion", cc_pop_mid)
wm.add('Over 1 billion', cc_pop_high)

wm.render_to_file('world_population.svg')

1 个答案:

答案 0 :(得分:1)

设置value_formatter属性将更改标签格式,但是在您的代码中,设置属性后将重新创建World对象。这个新创建的对象将具有默认值格式化程序。您也可以删除设置value_formatter属性的行之一,因为它们都可以实现相同的目的。

重新排序代码将解决您的问题:

wm_style = RotateStyle('#996699')
wm = World(style=wm_style)
wm.value_formatter = lambda x: "{:,}".format(x)
wm.force_uri_protocol = "http"

wm.title = "Country populations year 2010"
wm.add('0-10 million', cc_pop_low)
wm.add("10m to 1 billion", cc_pop_mid)
wm.add('Over 1 billion', cc_pop_high)

wm.render_to_file('world_population.svg')