Javascript 修复在plotly.js中不起作用的x范围

Javascript 修复在plotly.js中不起作用的x范围,javascript,plot,graph,plotly,Javascript,Plot,Graph,Plotly,我想修正x轴范围,以便在清除图例中的轨迹时,x轴范围不会改变,即使一条轨迹的范围不同 我试过: range: ["2016-05-01", "2016-05-05"] 看起来这应该是所有需要的,但x轴范围仍然在变化 如果在布局对象中设置autorange:false,则打印失败。x轴值和刻度都弄乱了。为什么会这样 但是,如果在布局对象定义之后使用 layout_autorange_after = false; 然后一切顺利 HTML: JAVASCRIPT: var data = [

我想修正x轴范围,以便在清除图例中的轨迹时,x轴范围不会改变,即使一条轨迹的范围不同

我试过:

range: ["2016-05-01", "2016-05-05"]
看起来这应该是所有需要的,但x轴范围仍然在变化

如果在布局对象中设置autorange:false,则打印失败。x轴值和刻度都弄乱了。为什么会这样

但是,如果在布局对象定义之后使用

layout_autorange_after = false;
然后一切顺利

HTML:

JAVASCRIPT:

var data = 
[
    {
        x: ["2016-05-01", "2016-05-02", "2016-05-03"],
        y: [4, 5, 6],
        mode: "lines+markers",
        name: "Test",
        yaxis: "y"
    },
    {
        x: ["2016-05-02", "2016-05-04", "2016-05-05"],
        y: [10, 2, 9],
        mode: "lines+markers",
        name: "Test 2",
        yaxis: "y2"
    }
];

var layout = 
{
    height: "300",
    width: "500",
    xaxis:
    {
        showgrid: false,
        domain:[0.2,1],
        range: ["2016-05-01", "2016-05-05"],
        type:"date",
        showline:true,
    },
    yaxis:
    {
        title: "Test",
        position: 0,
        range: [3,7],
        color: "red",
        showline: true,
        showgrid: false,
    },
    yaxis2:
    {
        title: "Test 2",
        position: 0.2,
        overlaying:"y",
        range: [1,11],
        color: "blue",
        showline: true,
        showgrid: false,
    }
};

var layout_autorange = 
{
    height: "300",
    width: "500",
    xaxis:
    {
        showgrid: false,
        domain:[0.2,1],
        range: ["2016-05-01", "2016-05-05"],
        autorange: false,
        type:"date",
        showline:true,
    },
    yaxis:
    {
        title: "Test",
        position: 0,
        range: [3,7],
        color: "red",
        showline: true,
        showgrid: false,
    },
    yaxis2:
    {
        title: "Test 2",
        position: 0.2,
        overlaying:"y",
        range: [1,11],
        color: "blue",
        showline: true,
        showgrid: false,
    }
};

Plotly.plot('graph', data, layout);
Plotly.plot('autorange', data, layout_autorange);

layout_autorange_after = JSON.parse(JSON.stringify(layout));
layout_autorange_after.xaxis.autorange = false;
Plotly.plot('autorange-set-after', data, layout_autorange_after)

您正在使用
日期
作为轴
类型
。从:

如果轴
类型
为“日期”,则必须以毫秒为单位将日期转换为unix时间

如果您转换日期(并稍微调整x轴),它应该按预期工作,即不需要
autorange=false
,删除一条跟踪不会改变轴

var数据=
[
{
x:[1462060800001462147200000,1462233600000],
y:[4,5,6],
模式:“行+标记”,
名称:“测试”,
亚克斯:“y”
},
{
x:[1462233600000、146232000000、1462406400000],
y:[10,2,9],
模式:“行+标记”,
名称:“测试2”,
亚克斯:“y2”
}
];
变量布局=
{
高度:“300”,
宽度:“500”,
xaxis:
{
showgrid:false,
域:[0.2,1],
范围:[1462060800000-60000001462406400000],
秀行:没错,
类型:“日期”
},
亚克斯:
{
标题:“测试”,
位置:0,
范围:[3,7],
颜色:“红色”,
秀行:没错,
showgrid:false,
},
yaxis2:
{
标题:“测试2”,
位置:0.2,
叠加:“y”,
范围:[1,11],
颜色:“蓝色”,
秀行:没错,
showgrid:false,
}
};
Plotly.绘图(‘图形’、数据、布局)

非常感谢您。这也解决了plotlyJS的“未捕获范围错误:超过最大调用堆栈大小”问题您是我的英雄
var data = 
[
    {
        x: ["2016-05-01", "2016-05-02", "2016-05-03"],
        y: [4, 5, 6],
        mode: "lines+markers",
        name: "Test",
        yaxis: "y"
    },
    {
        x: ["2016-05-02", "2016-05-04", "2016-05-05"],
        y: [10, 2, 9],
        mode: "lines+markers",
        name: "Test 2",
        yaxis: "y2"
    }
];

var layout = 
{
    height: "300",
    width: "500",
    xaxis:
    {
        showgrid: false,
        domain:[0.2,1],
        range: ["2016-05-01", "2016-05-05"],
        type:"date",
        showline:true,
    },
    yaxis:
    {
        title: "Test",
        position: 0,
        range: [3,7],
        color: "red",
        showline: true,
        showgrid: false,
    },
    yaxis2:
    {
        title: "Test 2",
        position: 0.2,
        overlaying:"y",
        range: [1,11],
        color: "blue",
        showline: true,
        showgrid: false,
    }
};

var layout_autorange = 
{
    height: "300",
    width: "500",
    xaxis:
    {
        showgrid: false,
        domain:[0.2,1],
        range: ["2016-05-01", "2016-05-05"],
        autorange: false,
        type:"date",
        showline:true,
    },
    yaxis:
    {
        title: "Test",
        position: 0,
        range: [3,7],
        color: "red",
        showline: true,
        showgrid: false,
    },
    yaxis2:
    {
        title: "Test 2",
        position: 0.2,
        overlaying:"y",
        range: [1,11],
        color: "blue",
        showline: true,
        showgrid: false,
    }
};

Plotly.plot('graph', data, layout);
Plotly.plot('autorange', data, layout_autorange);

layout_autorange_after = JSON.parse(JSON.stringify(layout));
layout_autorange_after.xaxis.autorange = false;
Plotly.plot('autorange-set-after', data, layout_autorange_after)