и заменить его на
приведен код для форматирования значения x, которое я использовал.
Примеры того, что это делает:
Форматирует 7 500 000 в 7,5 млн.Он форматирует 800 000 в 800 K
def Formatting(self, x, pos):
formats = ((1e-12,'%d%s T','%1.1f T'),
(1e-9, '%d%s B','%1.1f B'),
(1e-6, '%d%s M','%1.1f M'),
(1e-3, '%d%s k','%1.1f K' ))
for i, (N, A, B) in enumerate(formats):
if abs(x) > (1./N):
result = ''
x = x * N
if abs(x) >= 1000:
x, r = divmod(x, 1000)
result = ",%03d%s" % (r, result)
return A % (x, result)
else: return B % (x)
elif 1 <= abs(x) < 1e3: return '%1.0f' % (x)
elif 0.1 <= abs(x) < 1: return '%1.1f' % (x)
elif 0 < abs(x) < 0.1: return '%1.3f' % (x)
elif x == 0: return '%1.0f' % (x)
Теперь я изо всех сил пытался сделать следующие улучшения:
Вместо 550 М я хотел бы иметь возможность печатать .55 BВместо 550 B я хотел бы иметь возможность печатать .55 TВместо 550 К я хотел бы иметь возможность печатать .55 МВместо 0,001 я бы хотел печатать 0,001 без нуля.Однако 55,5 М, 55,5 В, 55,5 К все еще должны быть напечатаны - не 0,055 М или 0,055 В ..Предложения о том, как выполнить это изменение или улучшить этот фрагмент кода, чтобы иметь более значимые распечатки (которые используются в диаграмме)?
Большое спасибо!