首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在plotly.js中添加指针或表盘来测量指示器?

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

Stack Overflow用户
提问于 2021-05-14 13:05:48
回答 1查看 117关注 0票数 1

我很难将表盘/指针添加到plotly.js的仪表盘图表中。

gauge without needle:正如你在上面的图像中看到的,它的仪表图没有任何指针。

gauge with needle:我想构建类似于“针规”的东西,这让我很难做到。

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

代码语言:javascript
复制
`https://codepen.io/vivek137/pen/rNyembX`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 17:22:10

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

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

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67529286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档