Я хотел бы подробнее остановиться на ответе Торстена Кранца, похоже, что у matplotlib (2.02) может быть ошибка, заключающаяся в том, что он не использует поле тысяча сентябрь для разделения тысяч. Это происходит, даже если используется set_locale (True).
Поэтому, если вы установите локаль в локали Великобритании, она все равно должна разделять тысячи запятой, но это не так. Это делается для немецкого языка, поскольку используется десятичная точка.
Великобритания ('English_United Kingdom.1252') Язык:
{'currency_symbol': '\xa3',
'decimal_point': '.',
'frac_digits': 2,
'grouping': [3, 0],
'int_curr_symbol': 'GBP',
'int_frac_digits': 2,
'mon_decimal_point': '.',
'mon_grouping': [3, 0],
'mon_thousands_sep': ',',
'n_cs_precedes': 1,
'n_sep_by_space': 0,
'n_sign_posn': 3,
'negative_sign': '-',
'p_cs_precedes': 1,
'p_sep_by_space': 0,
'p_sign_posn': 3,
'positive_sign': '',
'thousands_sep': ','}
Немецкий ('German_Germany.1252') языковой стандарт:
{'currency_symbol': '\x80',
'decimal_point': ',',
'frac_digits': 2,
'grouping': [3, 0],
'int_curr_symbol': 'EUR',
'int_frac_digits': 2,
'mon_decimal_point': ',',
'mon_grouping': [3, 0],
'mon_thousands_sep': '.',
'n_cs_precedes': 0,
'n_sep_by_space': 1,
'n_sign_posn': 1,
'negative_sign': '-',
'p_cs_precedes': 0,
'p_sep_by_space': 1,
'p_sign_posn': 1,
'positive_sign': '',
'thousands_sep': '.'}
Edit:
Глядя на код в скалярном форматере, Matplotlib не использует флаг группировки:
def pprint_val(self, x):
"""The last argument should be True"""
xp = (x - self.offset) / (10. ** self.orderOfMagnitude)
if np.absolute(xp) < 1e-8:
xp = 0
if self._useLocale:
return locale.format_string(self.format, (xp,)) # <-- there should be a True as the last argument to this method which sets to grouping to True
else:
return self.format % xp