Plotly.js中单个图的多个X轴

时间:2018-05-23 21:16:07

标签: javascript plotly plotly.js

我有一条迹线,我想为X轴显示两个测量单位。

想象一下,我的情节有"英寸"作为正常的X轴。我还要展示" Centimeter"同时另一个X轴就在第一个X轴的正下方。

英寸和厘米具有1:1的关系,所以不应该有任何与扭曲痕迹相关的有趣业务。

我尝试过这样的布局:

var layout = {
    title: '',
    xaxis: {
        autorange: true,
        rangeslider: {},
        type: 'linear',
        title: 'Inches'
    },
    xaxis2: {
        autorange: true,
        rangeslider: {},
        type: 'linear',
        title: 'Centimeter',
        overlaying: 'x'
    },
    yaxis: {
        autorange: true,
        type: 'linear',
        title: ''
    },
};

但这不起作用,原因很明显,因为我甚至不包括有关厘米转换的详细信息。

你们都知道如何实现这样的观点吗?我是否需要使用匹配的Y数据进行第二次跟踪?

1 个答案:

答案 0 :(得分:2)

不确定你真的想要。但它可以帮助你玩这个。

请访问:example

var y = ['dot','pen','pencil','scale','stick'];
var x = [0,5,9,12,16];//inc
var tinc = []; //inc
var tcm = []; //cm
var incToCm ='';
for (var i = 0; i < x.length; i++) 
{
   incToCm = (x[i] * 2.54)+'cm';
   tcm.push(incToCm);
   tinc.push(x[i]+'inc');
}

var trace1 = {
  x:x,
  y:y,
  type:'bar',
  xaxis:'x',
  yaxis:'y'
}
var trace2 = {
  x:trace1.x,
  y:trace1.y,
  type:trace1.type,
  xaxis:'x2',
  yaxis:'y'
}
var data =[trace1,trace2];
var layout={
  xaxis:{
    tickvals:x,
    ticktext:tinc,
    ticksuffix:'inc',
    tickangle:45,
  }, 
  xaxis2:{
    tickvals:x,
    ticktext:tcm,
    ticklen:18,
    tickangle:45,
    tickwidth:0,
    tickcolor:'#eee',
  },
  showlegend:false
}
Plotly.plot('plotElement', data,layout);

Sample output