2014-01-23 9 views
6

Gibt es eine Möglichkeit komplexe Zahlen auf elegante Weise mit ggplot2 zu plotten? plot {graphics} tut es für meine snowflake Vektor von Werten, aber ich würde es vorziehen, es in ggplot2 zu haben. Die ggplot2 Tutorials, auf die ich stieß, erwähnen kein komplexes Wort.Komplexe Zahlen in R mit ggplot2 plotten

snowflake <- c(complex(real=0, imaginary=0), 
       complex(real=1/3, imaginary=0), 
       complex(real=1/2, imaginary=(3^(1/2))/6), 
       complex(real=2/3, imaginary=0), 
       complex(real=1, imaginary=0)) 
plot(snowflake, type="l") 

enter image description here

UPDATE

Leider Es scheint der Vorschlag unten nicht mit meinem komplexeren Figuren funktioniert - plot {graphics} Linien die Punkte in der Reihenfolge durch den Vektor der Werte gegeben, während qplotnicht. Se das folgende Beispiel:

my.snowflake <- c(0.0000000+0.0000000i, 0.1111111+0.0000000i, 
        0.1666667+0.0962250i, 0.2222222+0.0000000i, 
        0.3333333+0.0000000i, 0.3888889+0.0962250i, 
        0.3333333+0.1924501i, 0.4444444+0.1924501i, 
        0.5000000+0.2886751i, 0.5555556+0.1924501i, 
        0.6666667+0.1924501i, 0.6111111+0.0962250i, 
        0.6666667+0.0000000i, 0.7777778+0.0000000i, 
        0.8333333+0.0962250i, 0.8888889+0.0000000i, 
        1.0000000+0.0000000i) 

Ergebnisse:

plot(my.snowflake, type = "l") 

enter image description here

qplot(Re(my.snowflake), Im(my.snowflake), geom="line") 

enter image description here

+3

geom_path wahrscheinlich – baptiste

Antwort

9

extrahieren Sie einfach die realen und imaginären Teile der Zahl mit Re und Im, dann gib sie an ggplot2 als x und y:

qplot(Re(snowflake), Im(snowflake), geom="path") 

The OP's plot in ggplot2

In Ihrem Update weisen Sie darauf hin, dass geom_line nicht für einen nicht-trivialen Fall nicht funktionieren, so dass Sie geom_path verwenden, werden Sie wollen stattdessen, die die Punkte verbinden in der Reihenfolge, in der sie bereitgestellt werden. Hier ist Ihr komplexeres Beispiel mit geom_path:

The OP's updated plot in ggplot2, with geom_path

+0

Peyton, vielen Dank für Ihren Vorschlag! Leider funktioniert es nicht gut mit meinen komplizierteren Beispielen - bitte sehen Sie das Post-Update. –

+1

Sie haben recht, es sieht so aus, als wäre 'geom_line' kein guter Ersatz. Ich habe mein Beispiel aktualisiert, um 'geom_path' zu verwenden, wie Baptiste in den Kommentaren vorgeschlagen hat. 'geom_path' verbindet die Punkte in der von Ihnen angegebenen Reihenfolge. – Peyton

+0

Fest, danke! :) –