2016-08-18 1 views
0

Ich versuche, die Anweisungen here auf, wie man eine doppelte Y-Achsen-Diagramm erstellen (ja, ich weiß). Mein Code ist here.R: Dual-Y-Achse panel.grid.major nicht ausrichtend

In der Ausgabe sind jedoch einige der Hauptgitterlinien leicht fehlausgerichtet (siehe die rote Box), während einige von ihnen perfekt ausgerichtet sind. Ich bin nicht sicher, was diese Erweiterung eines der Plots verursacht. Ich habe den Code auf dieser Seite umgeschrieben, um ihn besser zu verstehen und habe möglicherweise irgendwo einen Fehler eingefügt.

enter image description here

Eine einfache Lösung wäre Gitterlinien auszuschalten auf einem der Grundstücke, aber das scheint das Problem versteckt werden, anstatt sie zu fixieren.


Edit:

Ich versuchte the original code hier unverändert laufen, und ich lief in den folgenden Fehler auf der Leitung 130.

> ticks$grobs[[1]]$x <- ticks$grobs[[1]]$x - unit(1, "npc") + tml 
Error in Ops.unit(ticks$grobs[[1]]$x, unit(1, "npc")) : 
    both operands must be units 

Also, ich kann nicht überprüfen, ob das Problem ein Fehler ist, dass Ich habe während der Transkription eingeführt.

Antwort

1

Ihr Code in der gist läuft nicht (und es ist auch ein bisschen kompliziert).

Um zu verstehen, warum die Linien nicht ausgerichtet sind, betrachten Sie dieses Beispiel:

  • axis1: Bereich: 0 - 1. Der Wert von 0,5 ist auf halbem Weg zwischen 0 und 1
  • axis2: Bereich: 0 - 10. der Wert von 5 ist auf halbem Weg zwischen 0 und 10.

Jetzt in Ihrem Diagramm Sie (so etwas wie)

  • axi haben s1: Bereich: 0 - 1.1. Der Wert von 0,5 ist 0,5/1,1 = 0,45 zwischen 0 und 1.
  • axis2: Bereich: 0 - 10.1. Der Wert 5 ist 5/10.1 = 0.495 zwischen 0 und 10.
  • Ergebnis: falsch ausgerichtete Linien.

Sie sollten keine Konstante zu jeder Achse hinzufügen, der Wert muss proportional zur Skalierung sein.

+0

Können Sie angeben, an welcher Stelle der Code im Haupttext für Sie fehlschlägt? – tchakravarty

+0

Sie vermissen Pakete ("dplyr') und geben keine Farben an. – csgillespie

+0

Aktualisierte den Code. Lassen Sie mich wissen, wenn Sie weitere Probleme bei der Ausführung des Codes haben. – tchakravarty