如何在 plotly.js 中添加针或刻度盘来测量指示器?

Posted

技术标签:

【中文标题】如何在 plotly.js 中添加针或刻度盘来测量指示器?【英文标题】:how to add a needle or dial to gauge indicator in plotly.js? 【发布时间】:2021-08-04 07:56:06 【问题描述】:

我很难将刻度盘/指针从 plotly.js 添加到仪表图表。

gauge without needle : 如上图所示,它是没有任何针头的仪表盘。

gauge with needle : 我想制作类似“带针的量规”的东西,这让我很难受。

我的“无针/表盘仪表”代码:

`https://codepen.io/vivek137/pen/rNyembX`

【问题讨论】:

【参考方案1】:

您需要在仪表图顶部添加箭头注释。我回答了一个类似的问题,在that answer 中,我描述了如何使用极坐标找出箭头的结束位置xy。在引擎盖下,您制作的仪表图的 x 范围为 [0,1],y 范围为 [0,1],因此起点是 ax=0.5ax=0,它们都是您的参数注解。然后结束位置由x = 0.5 + r * cos(theta)y = r * sin(theta) 给出,其中theta 是从图表右侧截取并逆时针移动的角度。

您应该记住的一件事是,如果您的浏览器中的渲染区域不是一个完美的正方形,那么可能需要调整 rtheta 的值。比如my codepen,我用r=0.7theta=93.5指向40。

let data = [
    
        mode: "gauge",
        type: "indicator",
        value: 40,

        gauge: 
            shape: "angular",
            bar: 
                color: "blue",
                line: 
                    color: "red",
                    width: 4
                ,  
                thickness: 0
            ,
            bgcolor: "#388",
            bordercolor: "#a89d32",
            borderwidth: 3,
            axis: 
                range: [0,100],
                visible: true,
                tickmode: "array",
                tickvals: [5, 10, 40, 80, 100],
                ticks: "outside"
            ,
            steps: [
                
                    range: [0, 40],
                    color: "#9032a8"
                
            ]
        
    
]

var theta = 93.5
var r = 0.7
var x_head = r * Math.cos(Math.PI/180*theta)
var y_head = r * Math.sin(Math.PI/180*theta)

let layout = 
  xaxis: range: [0, 1], showgrid: false, 'zeroline': false, 'visible': false,
  yaxis: range: [0, 1], showgrid: false, 'zeroline': false, 'visible': false,
  showlegend: false,
  annotations: [
    
      ax: 0.5,
      ay: 0,
      axref: 'x',
      ayref: 'y',
      x: 0.5+x_head,
      y: y_head,
      xref: 'x',
      yref: 'y',
      showarrow: true,
      arrowhead: 9,
    
  ]
;
Plotly.newPlot('gauge1', data, layout)

【讨论】:

以上是关于如何在 plotly.js 中添加针或刻度盘来测量指示器?的主要内容,如果未能解决你的问题,请参考以下文章

自定义外观 plotly.js 图例

如何在 plotly.js 图表中添加彩色背景条

如何在 PLOTLY JS 中为每个子图添加标题

Plotly.js:覆盖两个具有相同 x 轴和不同 y 轴比例的不同图形

QWT 轴强制主刻度为零

将配置模式添加到 Plotly.Py 离线 - 模式栏