在plotly.js图表​​中被切断的长刻度标签

时间:2016-04-13 11:27:20

标签: javascript d3.js label axes plotly

是否可以为plotly.js中的刻度标签留出更多空间?我的图表中的长标签正在被切断。

enter image description here

HTML:

<div id="plot"></div>

JavaScript的:

var data = [{
  type: 'bar',
  x: [20, 14, 23],
  y: ['giraffes', 'orangutans', 'a looooooooong string'],
  orientation: 'h'
}];

var layout = {
  title: 'Bar Chart'
};

Plotly.newPlot('plot', data, layout);

我无法在API for y-axes tick settings中看到如何执行此操作。

鉴于我的图表的性质,我需要使用水平方向。所以我不能使用的解决方案是垂直方向,刻度旋转90度。

2 个答案:

答案 0 :(得分:14)

更新:通过。 .automargin配置选项,添加了对automargins的支持(请参阅https://github.com/plotly/plotly.js/pull/2243)。

要使用,您需要更改:

var layout = {
  title: 'Bar Chart'
};

为:

var layout = {
  title: 'Bar Chart',
  yaxis: {
    automargin: true
  }
};

有关详细信息,请参阅https://plot.ly/javascript/axes/

原始答案: 您可以调整绘图图表的边距,为自己增加一些空间。例如,改变:

var layout = {
  title: 'Bar Chart'
};

var layout = {
  title: 'Bar Chart',
  margin:{
    l:200
  }
};

您可以在此处详细了解如何调整边距:https://plot.ly/javascript/setting-graph-size/ 和总体布局选项:https://plot.ly/javascript/#layout-options

答案 1 :(得分:1)

您还可以根据标签长度动态设置保证金:

var maxLabelLength = d3.max(data, d => d3.max(d.y, label => label.length));
const letterWidth = 7;
var layout = {
  title: 'Bar Chart',
  margin:{
    l: maxLabelLength * letterWidth
  }
};