Javascript 在使用d3的图表中有两个刻度

Javascript 在使用d3的图表中有两个刻度,javascript,d3.js,Javascript,D3.js,我正在使用d3创建一个图表,y轴上有两个刻度,一个朝向图表的左侧,另一个朝向图表的右侧 在左边的Y轴上,我试图绘制收入与日期的关系,在右边,我试图绘制点击与日期的关系 收入的最大值是1800美元,点击的最大值是4000美元。 蓝色线是收入线,橙色线是点击数 有人能帮我吗?我怎样才能使橙色线适合同一个y域 我用于收入的代码是: var y = d3.scale.linear() .domain([min_y_value, max_y_value]) .range([height -

我正在使用d3创建一个图表,y轴上有两个刻度,一个朝向图表的左侧,另一个朝向图表的右侧

在左边的Y轴上,我试图绘制收入与日期的关系,在右边,我试图绘制点击与日期的关系

收入的最大值是1800美元,点击的最大值是4000美元。 蓝色线是收入线,橙色线是点击数

有人能帮我吗?我怎样才能使橙色线适合同一个y域

我用于收入的代码是:

var y = d3.scale.linear()
    .domain([min_y_value, max_y_value])
    .range([height - margin, margin]);

var x = d3.time.scale()
    .domain([start_date, end_date])
    .range([0 + margin, width - margin]);

var color = d3.scale.category10().range();

var vis = d3.select("#chart")
    .append("svg:svg")
    .attr("width", width)
    .attr("height", height);

var g = vis.append("svg:g")
    .attr("transform", "translate("+margin+",0)");

var line = d3.svg.line()
    .x(function(d,i) {
        return x(get_date(d.date));
    })
    .y(function(d) {
        return y(d[trend]);
    });

for(var i = 0; i < report.length; i++) {
    g.append("svg:path")
        .attr("d", line(report[i]))
        .attr("fill", "none")
        .attr("stroke", color[i % 10])
        .attr("id", "line-"+report[i][0]['offer_name'])
        .attr("stroke-width", 2);
}
我用来点击的代码是

var trend1 = 'clicks';
var max_y1_value = max_min['max_'+trend1];
var min_y1_value = max_min['min_'+trend1];
var y1_range = max_y1_value - min_y1_value;
var y1_interval_value = Math.floor(y1_range/yticks);

max_y1_value = max_y_value + y_interval_value;
min_y1_value = (min_y_value - y_interval_value > 0)?(min_y_value - y_interval_value) : 0;

var y1 = d3.scale.linear().domain([min_y1_value, max_y1_value]).range([height - margin, margin]);
var x1 = d3.time.scale().domain([start_date, end_date]).range([0 + margin, width - margin]);
console.log('max_y_value : '+max_y_value+'  min_y_value : '+min_y_value+'    max_y1_value : '+max_y1_value+'  min_y1_value : '+min_y1_value+'   trend1: '+trend1);
var line1 = d3.svg.line()
    .x(function(d,i) {
        return x1(get_date(d.date));
    })
    .y(function(d) {
        console.log(d[trend1]+'    '+y1(d[trend1]));
        return y1(d[trend1]);
    });

for(var i = 0; i < report.length; i++) {
    g.append("svg:path")
        .attr("d", line1(report[i]))
        .attr("fill", "none")
        .attr("stroke", color[i + report.length % 10])
        .attr("id", "line1-"+report[i][0]['offer_name'])
        .attr("stroke-width", 2);
}

有人能帮助我如何使橙色线适合同一y域吗?

看起来您正在用其他序列的值覆盖最大值和最小值。例如,首先定义max_y1_值:

然后用另一个值替换:

max_y1_value = max_y_value + y_interval_value;

我建议使用从数据计算域。

看起来您正在用其他序列中的值覆盖最大值和最小值。例如,首先定义max_y1_值:

然后用另一个值替换:

max_y1_value = max_y_value + y_interval_value;
我建议使用从数据计算域