Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使Nvd3在y轴上使用对数刻度_Javascript_D3.js_Nvd3.js_Python Nvd3 - Fatal编程技术网

Javascript 如何使Nvd3在y轴上使用对数刻度

Javascript 如何使Nvd3在y轴上使用对数刻度,javascript,d3.js,nvd3.js,python-nvd3,Javascript,D3.js,Nvd3.js,Python Nvd3,如何在nvd3线形图中使用对数刻度?我正在绘制这些包含大量数字的系列: ydata1 = [13947989924.43, 13944328607.2, 13936012870.52, 13792849748.97, 13756681531.69] ydata2 = [10031442377.14, 10026457857.22, 10013108551.11, 9995581772.15, 9989728780.19] 因为y轴不是从0开始的,ydata1和ydata2看起来相距很远。如何

如何在nvd3线形图中使用对数刻度?我正在绘制这些包含大量数字的系列:

ydata1 = [13947989924.43, 13944328607.2, 13936012870.52, 13792849748.97, 13756681531.69]
ydata2 = [10031442377.14, 10026457857.22, 10013108551.11, 9995581772.15, 9989728780.19]


因为y轴不是从
0
开始的,
ydata1
ydata2
看起来相距很远。如何调整并使用对数刻度?

我的NVD3有点生锈,但我想我能帮上忙

您的系列也将以对数比例相距很远(正如您所建议的),这正是NVD3分隔事物的方式,因此更改轴的域将有所帮助。可以按如下方式更改y轴的比例类型和域:

日志轴的创建方式如下:

chart.yScale( d3.scale.log() );
可以按如下方式设置基准:

chart.yScale( d3.scale.log().base(2) );
您还可以通过使用强制y域包含特定范围(请记住“对数刻度必须具有独占正域或独占负域;域不得包含或超过零。”()):

这可以帮助您将数据从上边缘和下边缘集中起来。我不知道有任何NVD3方法允许您自动执行此操作,但您可以根据数据集中的最大值/最小值动态设置这些值

以下代码段使用对数刻度和y轴的强制域:

var图;
var数据;
nv.addGraph(函数(){
chart=nv.models.lineChart()
.x(函数(d){返回d.x;})
.options({showYAxis:true})
.forceY([100000000050000000000]);
数据=[{
重点:1,,
值:[{x:1,y:13947989924},{x:2,y:13944328607},{x:3,y:13936012870},{x:4,y:13792849748},{x:5,y:13756681531}]
},{
重点:二,,
值:[{x:1,y:10031442377},{x:2,y:10026457857},{x:3,y:10013108551},{x:4,y:9995581772},{x:5,y:9989728780}]
}]   
chart.yScale(d3.scale.log());
d3.选择(“#图表”).append('svg'))
.基准(数据)
.电话(图表);
nv.utils.windowResize(图表更新);
收益表;
});
#图表svg{
宽度:500px;
高度:300px;
}

chart.forceY([1000000000,50000000000]);