Несколько осей X для одного графика в Plotly.js - PullRequest
0 голосов
/ 24 мая 2018

У меня есть одна трасса, которую я хочу показать двумя единицами измерения для оси X.

Представьте, что на моем графике "Дюймы" как обычная ось X.Я также хочу показать «Сантиметр» одновременно с другой осью 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 голосов
/ 24 мая 2018

Не уверен, что это на самом деле вы хотите.Но это может помочь вам поиграть с этим.

Пожалуйста, посетите: пример

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);

Пример вывода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...