Zweifache Y-Achsen-Übereinstimmung auf Highcharts

8

Ich repräsentiere den Blutdruck auf einer Grafik und ich möchte sowohl systolisch als auch diastolisch und die Grafik darstellen. In der Regel werden diese Grafiken zusammen nach folgenden Regeln angezeigt:

90 Der systolische Druck sollte auf dem gleichen Niveau wie 60 diastolisch sein 140 Der systolische Druck sollte auf dem gleichen Niveau sein wie 90 diastolisch

Also ich dachte, es war wegen Max und Mins, die Personenbasis festgelegt sind, also entwickelte ich dies, um zu versuchen, dieses Problem zu lösen:

%Vor%

Das bedeutet, dass die Min- und Max-Werte zuerst aus den Personendaten oder dem gelieferten Wert kommen. Zum Beispiel würde getMinValue(80,person.data,10) einen Wert zurückgeben, der nicht größer als 80 ist, selbst wenn alle Werte größer als das sind.

Aber es funktioniert nicht. Es stimmt mit der ersten Menge überein, aber dann schlägt es fehl.

Gibt es einen einfacheren Weg, dies zu tun?

    
Antonio Laguna 23.12.2012, 23:58
quelle

1 Antwort

8

Eine sehr schöne Frage !!!

Es ist eher ein Mathe / Geometrie-Problem als ein Programmier- / Highchart-Problem. Aber hey, es gibt ein ganzes Thema in diesem Gaukelei. Computergrafik !!

Wenn ich Ihre Frage richtig beantwortet habe (ich hoffe ich tat es, sonst verbrachte ich eine Stunde damit, ein nicht existierendes Problem zu lösen, und eine andere, die eine verständliche Antwort entwarf).

  • Sie möchten immer, dass valueX1 (90) mit valudY1 (60) und valueX2 (140) auf den Wert Y2 (90) ausgerichtet wird. X und Y sind auf verschiedenen y-Achsen aufgetragen.

Hier ist die Lösung. Alles, was wir tun müssen, ist, die Min- und Max-Werte der beiden Achsen korrekt auszurichten, damit die erforderlichen Punkte auch von selbst korrekt ausgerichtet werden können.

So machen wir das.

  • Akzeptieren Sie die min & amp; max, die von Highcharts wie für eine der Achsen berechnet wird und die min & amp; max der anderen Achse basierend auf dem folgenden. (Welche Achse akzeptiert werden kann, kann schwierig sein, wird dies für diese Frage oder als Heimarbeit nicht gelten lassen =]). Lassen Sie uns die Werte der 1. Achse von Highchart übernehmen und berechnen Sie die Werte für die Sekunde selbst.

  • Wie berechnet man min2 / max2 basierend auf min1 / max1?

    Wir verwenden etwas, das als Zwei-Punkte-Formular zum Lösen von linear bekannt ist Gleichungen

    %Vor%

    hier x1 = 90, y1 = 60, x2 = 140, y2 = 90. Setzen Sie einen Wert von x, um den entsprechenden Wert von y zu erhalten. Setzen Sie min1, um min2 zu erhalten, setzen Sie max1, um max2 zu erhalten.

Code

%Vor%

Passen Sie min / max von series2 basierend auf den berechneten (nach Highcharts) min / max von series1 bei Chart Load

an %Vor%

Ausrichten von Ticks in mehreren Achsen | Highchart & amp; Highstock @ jsFiddle

Sie müssen mit den Tick-Einstellungen und Gitternetzlinien herumspielen. Wird das hier außer Reichweite lassen, da sie mehr für eine andere Frage ergeben.

Update: Code, um die Ticks basierend auf neuen Extremen anzupassen

%Vor%     
Jugal Thakkar 29.12.2012, 19:19
quelle

Tags und Links