在 y 轴上显示太多数字

Posted

技术标签:

【中文标题】在 y 轴上显示太多数字【英文标题】:plotly displaying too many digits on y axis 【发布时间】:2022-01-08 04:55:15 【问题描述】:

我有噪声数据在 0 和 1 之间反弹。当值在 0 左右时,y 轴显示合理的 y 轴标签。但是,当值在 1 左右时,yaxis 标签太长,因为显示了太多数字并被页面上的其他内容截断。我创建了一个简单的代码笔来演示这里的问题:

https://codepen.io/mmakrzem/pen/ZEbBENK

const plotEl = document.getElementById('myDiv');

const numLines = 1;
const numDataPoints = 8;

const x = Array.from(  length: numDataPoints , ( _, i ) => i );

function getY( offset, num ) 
  return Array.from(  length: num , ( _, i ) => offset + Math.random() * 1e-10 );


const data = [ 
  
    x,
    y: getY( 0, numDataPoints ),
    xaxis: "x",
    yaxis: "y",
  
];

const layout = 
    width: 800,
    height: 500,
    showlegend: true,


Plotly.newPlot(plotEl, data, layout)

let t = numDataPoints;
const iHandle = setInterval( () => 
    t += 1;
    
  const offset = Math.floor( t / numDataPoints ) % 2;
  
    const update = 
        x: [[t]],
        y: [getY( offset, 1 )]
    ;  
    Plotly.extendTraces( plotEl, update, [ 0 ], 4 );
    
    if( t > 90 ) 
        clearInterval( iHandle );
    
, 1000 );

如何固定 y 轴标签,使其不显示这么多数字?

【问题讨论】:

【参考方案1】:

你可以使用tickformat。

我在 yaxis 中添加了刻度格式。此代码最多只能显示在小数点以下三位。

Plotly 的 tickformat 遵循 d3.js 方法。

有关 tickformat 的更多信息,请参阅此链接。 d3.js tickformat

const layout = 
    width: 800,
    height: 500,
    showlegend: true,
    yaxis: 
      tickformat: '.3f',
    ,

【讨论】:

我已经更新了代码笔:codepen.io/mmakrzem/pen/ZEbBENK 但是当数字很大时仍然存在问题...注意现在我在 10M 左右波动,但 y 轴标签被切断

以上是关于在 y 轴上显示太多数字的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ggplot 更改轴上数字的格式?

y轴上的jquery highcharts文本

R语言ggplot2可视化更改轴上数字的格式(显示格式)实战

如何在全局轴上旋转图形,而不是局部轴?

图表轴上的 Excel 自定义数字格式

数字图像处理