关于ZAKER 融媒体解决方案 合作 加入

如何在量表中旋转刻度盘?精巧地使用 pyth.

CocoaChina 10-23

我最近开始在python中将 plotly 包用于仪表图 .

在学习了教程和模板here之后 ,

我想知道是否有一种方法可以旋转给定角度值的 " 拨号 " 或 " 针 "?

有人建议我使用 css:transform 来完成技巧 , 但我仍然很难知道如何将 css 应用于可绘制的脚本 .

简短的代码将是不错的选择 .

先感谢您 .

最佳答案

这个问题有点晚了 . 尽管仍然需要解决 , 但我对这个问题的解决方案是:

我正在使用 svg 路径进行绘图教程中给出的拨号 , 即

M 0.235 0.5 L 0.24 0.65 L 0.245 0.5 Z

中心点 ( 0.24,0.65 ) 接触量规内部的圆弧 . 因此 , 拱形是一个圆 , 其中心为 ( 0.24,0.5 ) , 半径为 0.15.

给定以弧度为单位的角度 theta, 中心 ( h,k ) 并以极坐标形式表示一个圆 , 我们可以很容易地获得圆上某个点的笛卡尔坐标 , 如下所示:

x = h + r * cos ( theta ) y = k + r * sin ( theta )

然后 , 我们可以简单地将输入映射到它在量规上应该具有的预期角度 , 并从那里计算 x 和 y. 对于我在 python 中使用数学库的实现 , 这可以转换为以下内容:

h = 0.24k = 0.5r = 0.15# Map my_raw_value to degrees. my_raw_value is between 0 and 300theta = my_raw_value * 180 / 300# and then into radianstheta = theta * math.pi / 180x = h + r*math.cos ( theta ) y = k + r*math.sin ( theta ) path = 'M 0.235 0.5 L ' + str ( x ) + ' ' + str ( y ) + ' L 0.245 0.5 Z'

这将为您的形状动态生成三角形路径 , 并大致将表盘的长边设置在该位置 . 理想情况下 , 我们希望旋转整个对象 , 因为在此实现中 , 三角形的底端保持静态 , 从而在图形的边界上形成一条直线 .

您将需要将路径上的所有三个点乘以旋转矩阵以获得精确的坐标 .

以上内容由"CocoaChina"上传发布 查看原文
相关标签 python量规表盘