#python #number-formatting #pygal
#python #форматирование чисел #pygal
Вопрос:
Я использую pygal для создания интерактивной карты, показывающей население стран мира с 2010 года. Я пытаюсь найти способ, чтобы население страны отображалось со вставленными запятыми, т.Е. как 10000, а не просто 10000.
Я уже пробовал использовать «{:,}».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:
Установка 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')
Комментарии:
1. Сработало отлично. Спасибо, что объяснили мою ошибку.