2013-03-04 9 views
16

Kiedy utworzyć wykres z D3 etykiety osi mają przecinki w nich wyznaczają tysiące, miliony itdFormatowanie liczb z przecinkami w D3

Czy istnieje funkcja D3, że mogę zadzwonić przekazując mu numer i coraz powrót ciąg znaków sformatowany za pomocą przecinków, takich jak używane w osi? Byłby to odpowiednik tego C#: x.ToString("0,000").

Wiem, że istnieją biblioteki do formatowania w ten sposób, ale chciałbym uniknąć dołączania dodatkowych bibliotek. Używam już D3, więc jeśli jest tam API, mogę użyć, że byłoby wspaniale.

Odpowiedz

18

Szybkie wyszukiwanie w dokumentacji znalazłem:

format = d3.format("0,000"); 
formattedX = format(x); 

https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format

+7

Jak to może dostać 21 upvotes i być zaakceptowane odpowiedź? Jest to błędne, specyfikator formatu jest nieprawidłowy. Po łączu z dokumentami łatwo zauważyć, że za przecinkiem nie może znajdować się cyfra. Zdarza się, że działa przypadkowo, ponieważ w łańcuchu znajduje się przecinek. To w końcu jest jedyną postacią potrzebną do włączenia grupowania. – altocumulus

9

Składnia ten sposób stał się bardziej ściśle egzekwowane w d3 v4 ale wygląda następująco:

format = d3.format(","); 
formattedX = format(x); 

D3 formatting docs

+4

Nie zmieniła się z wersji 3 do wersji 4. v4 jest po prostu trochę bardziej wybredny narzekając na niewłaściwy specyfikator, podczas gdy v3 po prostu kontynuuje interpretowanie tego, co może zrozumieć. Samo-odpowiedź przez MattD po prostu nie ma sensu. Zobacz mój komentarz do tej odpowiedzi. Wszystko czego potrzebujesz do włączenia grupowania to 'd3.format (", ")'. Nie będziesz potrzebował nawet ostatecznej postaci "" d ". Dostosuj odpowiednio odpowiedź i, być może, dodaj link do dokumentów, aby uzyskać referencje. – altocumulus

7

Aby zaoszczędzić f rom przeczytaniu komentarzy @altocumulus', to jest prawidłowa odpowiedź:

let format = d3.format(','); let formattedX = format(x);

Od the docs:

Przecinek (,) Opcja umożliwia zastosowanie separatora grup, takich jak przecinek dla tysiące.

(@altocumulus dostaje cały kredyt.)

+0

'var x = d3.format (" $. 2f ") (myVal); 'pracował dla moich celów i https://github.com/d3/d3-format#locale_format był pomocny. – Ryan

Powiązane problemy