我在chart studio上发现了一个python示例,它解决了同样的问题,下面是他们转换为Javascript的答案。它拥有我所需要的一切——我缺少的是覆盖的要求。。。
感谢~empet/15704/
const layout = {
width : 900,
height : 600,
title : {
text: 'Subplots with 3 plot windows referenced to a single yaxis<br>and a subplot with multiple yaxes',
x: 0.5
},
grid: {rows: 2, columns: 2},
xaxis: {anchor: 'y', domain: [0.0, 0.45] },
xaxis2: {anchor: 'y2', domain: [0.55, 1.0] },
xaxis3: {anchor: 'y3', domain: [0.0, 0.45] },
xaxis4: {anchor: 'y4', domain: [0.55, 1.0] },
yaxis: {anchor: 'x', domain: [0.575, 1.0]},
yaxis2: {anchor: 'x2', domain: [0.575, 1.0]},
yaxis3: {anchor: 'x3', domain: [0.0, 0.425]},
yaxis4: {anchor: 'x4', domain: [0.0, 0.425]},
yaxis5: {anchor: 'free', overlaying: 'y4', side: 'left', position: 0.5},
yaxis6: {anchor: 'x4', overlaying: 'y4', side: 'right'},
yaxis7: {anchor: 'free', overlaying: 'y4', side: 'right', position: 0.9}
};
var trace1a = {
x: [0, 1],
y: [2, 3],
name: 'y1a data',
xaxis: 'x',
yaxis: 'y',
type: 'scatter'
};
var trace1b = {
x: [0,0.5, 1],
y: [1, 4, 2],
name: 'y1b data',
xaxis: 'x',
yaxis: 'y',
type: 'scatter'
};
var trace2a = {
x: [0, 1],
y: [3, 2],
name: 'y2a data',
xaxis: 'x2',
yaxis: 'y2',
type: 'scatter'
};
var trace2b = {
x: [0,0.5, 1],
y: [2, 4, 1],
name: 'y2b data',
xaxis: 'x2',
yaxis: 'y2',
type: 'scatter'
};
var trace3a = {
x: [0, 1],
y: [2, 3],
name: 'y3a data',
xaxis: 'x3',
yaxis: 'y3',
type: 'scatter'
};
var trace3b = {
x: [0,0.5, 1],
y: [1, 3, 1],
name: 'y3b data',
xaxis: 'x3',
yaxis: 'y3',
type: 'scatter'
};
var trace4 = {
x: [1, 2, 3],
y: [4, 5, 6],
name: 'y5 data',
xaxis: 'x4',
yaxis: 'y4',
type: 'scatter'
};
var trace5 = {
x: [2, 3, 4],
y: [40, 50, 60],
name: 'y5 data',
xaxis: 'x4',
yaxis: 'y5',
type: 'scatter'
};
var trace6 = {
x: [4, 5, 6],
y: [40000, 50000, 60000],
name: 'y6 data',
xaxis: 'x4',
yaxis: 'y6',
type: 'scatter'
};
var trace7 = {
x: [5, 6, 7],
y: [35, 50, 60],
name: 'y7 data',
xaxis: 'x4',
yaxis: 'y7',
type: 'scatter'
};
// And let's go
const traces = [trace1a, trace1b, trace2a, trace2b, trace3a, trace3b, trace4, trace5, trace6, trace7];
Plotly.newPlot('myDiv', traces, layout);