2013-10-09 43 views
1

我正在用d3构建一个图形,有时图形在轴上有较小的数字,有时图形在轴上有较大的数字。这会不时导致以下问题;d3中的响应轴值

enter image description here

注意如何在左边和右边的SVG元素完成和犯规得到这样的显示整个图例。我宁愿不玩弄增加任何一方的利润率,因为这会减少屏幕的房地产。

有没有一种方法可以使轴对数据输入作出响应?即;当数字为数千时,则将数字(100000 - > 100K,12000000 - > 12M)加上'k'或'm'。

+0

为什么不用if语句创建一个类似函数rounder(x){if(x <1000000){d3.format(.0r)}的舍入函数{d3.format(.2s)} ;.注意我没有测试过这个。顺便说一句,格式函数中的s类型以单位为后缀进行舍入,就像你想[(见本)](https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format)。 – user1614080

回答

2

功能axis.tickFormat()可以让你做到这一点。这些格式在d3.format()的文档中有描述。在你的情况下,你需要指定类似于

axis.tickFormat(d3.format("s"));