簡體   English   中英

如何在儀表圖表中旋轉表盤? 使用python plotly

[英]How to rotate the dial in a gauge chart? Using python plotly

我最近在python中使用plotly包作為計量表。

這里完成教程和模板之后,我想知道是否有一種方法可以在給定角度值的情況下旋轉“撥號”或“針”?

有人建議我使用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)

然后我們可以簡單地將輸入映射到它應該在儀表上的預期角度,並從那里計算xy 對於我在python中的實現,使用math庫,這轉換為以下內容:

h = 0.24
k = 0.5
r = 0.15
# Map my_raw_value to degrees. my_raw_value is between 0 and 300
theta = my_raw_value * 180 / 300
# and then into radians
theta = theta * math.pi / 180
x = 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'

這將動態生成您的形狀的三角形路徑,並粗略設置表盤的長邊應該是什么。 理想情況下,我們希望旋轉整個事物,因為在此實現中,三角形的底部保持靜態,從而在圖形的極限上產生直線。 您需要將路徑上的所有三個點乘以旋轉矩陣以獲得精確坐標。

不知道為什么,但上述解決方案對我不起作用。 但是,如果嘗試幾個值,您會發現x軸和y軸的尺寸不同。 您可以通過查看每個刻度中半徑之間的比率來找到常量。 結果很簡單,除了將x笛卡爾坐標乘以C = 0.25之外,一切都與@jvrsgsty答案相同。

所以,字面意思就像@jvrsgsty建議一樣,但x坐標現在是:

x = h + r*math.cos(theta)*C

就我而言,@ jvrsgsty提供的解決方案需要稍加修改才能工作。 這就是我最終修復它的方式:

h = 0.24
k = 0.5
r = 0.15
# Map my_raw_value to degrees. my_raw_value is between 0 and 300
theta = (100 - my_raw_value) * 180 / 100
# and then into radians
theta = theta * math.pi / 180
x = 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM