2016-05-26 6 views
1

Ich bin vor kurzem in Verwendung plotly Paket für ein Messgerät Diagramm in Python.Wie kann man das Zifferblatt in einem Messdiagramm drehen? Mit Python plotly

Nach dem Durchlaufen des Tutorials und der Vorlage here, Ich frage mich, ob es eine Möglichkeit gibt, die "Dial" oder "Nadel" bei einem Winkelwert zu drehen?

Jemand hat vorgeschlagen, dass ich css: transformiere, um den Trick zu tun, aber immer noch ist es schwer für mich zu wissen, wie man css auf das Plotly-Skript anwenden.

Ein kurzer und einfacher Code wäre großartig. Vielen Dank im Voraus.

Antwort

1

Ein bisschen spät zu dieser Frage. Meine Lösung für dieses Problem, obwohl es muss noch Arbeit ist:

ich den svg Pfad für die Einwahl in das plotly Tutorial gegeben verwendet wurde, nämlich

M 0.235 0.5 L 0.24 0.65 L 0.245 0.5 Z

Der Mittelpunkt (0.24,0.65) berührt den Bogen der Kreis auf dem inneren Teil der Lehre. Somit ist der Bogen ein Kreis mit seinem Mittelpunkt bei (0.24,0.5) und einem Radius von 0.15.

einen Winkel theta in Radiant, ein Zentrum (h,k), und mit dem Ausdruck eines Kreises in Polarform gegeben, können wir leicht zu diesem Grad kartesischer Koordinaten für einen Punkt auf dem Kreis erhalten, wie folgt:

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

können wir dann ordnen Sie einfach unsere Eingabe dem erwarteten Winkel zu, den es auf dem Messgerät haben soll, und berechnen Sie x und y von dort. Für meine Implementierung in Python, die math Bibliothek bedeutet dies auf die folgenden:

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' 

Dies wird das Dreieck Pfad für Ihre Form dynamisch generieren und in etwa die lange Kante des Wahl gesetzt, wo es sein soll . Idealerweise würden wir das Ganze drehen wollen, da in dieser Implementierung die Basis des Dreiecks statisch bleibt, was zu einer geraden Linie an den Grenzen des Graphen führt. Sie müssten alle drei Punkte auf dem Pfad mit einer Rotationsmatrix multiplizieren, um die genauen Koordinaten zu erhalten.