Plotly addTraces / relayout给出与newPlot不同的输出

时间:2016-05-02 02:30:51

标签: javascript plotly

我有一个简单的情节,有两条痕迹和两条yaxis规格。当我使用newPlot同时绘制它们时,我得到了所需的结果。当我一次一个地绘制迹线(和布局)时,我得到了不同的结果,这不是我想要的。

使用newPlot

enter image description here

使用addTraces / relayout

enter image description here

https://jsfiddle.net/abalter/eatszatj/

使用Javascript:

Plotly.newPlot("graph",[{}],{title: "Plot"});

trace1 = {y: [1,2,1]};
trace2 = {
    y: [0,0,0], 
  yaxis: "y2", 
  mode: "markers", 
  marker: {symbol: 6, size: 12}
};
yaxis1 = {domain: [0, 0.8], title: "one"};
yaxis2 = {
    domain: [0.85, 1.0],
  showgrid: false,
  showticklabels: false,
  title: "two",
  zeroline: false
};

Plotly.addTraces('graph', [trace1]);
Plotly.relayout('graph', {yaxis1});

Plotly.addTraces('graph', [trace2]);
Plotly.relayout('graph', {yaxis2});

//Plotly.newPlot('graph',[trace1, trace2],{yaxis1, yaxis2});

2 个答案:

答案 0 :(得分:1)

问题在于您第一次Plotly.newPlot来电。您正在传入空的跟踪对象,该跟踪对象默认为不可见的散点跟踪。

这意味着您的第一个Plotly.addTraces来电中的跟踪实际上是图表的第二个跟踪(默认情况下以橙色绘制),而第二个Plotly.addTraces来电中的跟踪实际上是图表的第三条曲线(默认情况下以绿色绘制)。

因此,将第一行更改为

Plotly.newPlot("graph",[],{title: "Plot"});

您将获得所需的结果图。

答案 1 :(得分:1)

解决方案证明您需要在relayout之前致电addTraces。 Ettiene(etpinard)为我找到了另一个问题的解决方案。

http://community.plot.ly/t/no-2nd-y-axis-with-addtraces-and-relayout/963

它也解决了这个问题。

Plotly.newPlot("graph",[],{title: "Plot"});

trace1 = {y: [1,2,1]};
trace2 = {
    y: [0,0,0], 
  yaxis: "y2", 
  mode: "markers", 
  marker: {symbol: 6, size: 12}
};
yaxis1 = {domain: [0, 0.8], title: "one"};
yaxis2 = {
    domain: [0.85, 1.0],
  showgrid: false,
  showticklabels: false,
  title: "two",
  zeroline: false
};

Plotly.relayout('graph', {yaxis1});
Plotly.addTraces('graph', [trace1]);

Plotly.relayout('graph', {yaxis2});
Plotly.addTraces('graph', [trace2]);

//Plotly.newPlot('graph',[trace1, trace2],{yaxis1, yaxis2});