2016-07-15 10 views
0

Ich habe einige Fragen zum Plotten mit ggplot2. wie soll ich eine durchgehende Linie, welche Datenpunkte ziehen und wie kreise ich um Datenpunkte für users >40: Ich habe bereits unter Befehlen an FarbdatenpunktenBedingte Kreise um Datenplots mit ggplot2

mit R.
library(ggplot2) 
df <- read.csv(file="c:\\query2.csv") 
ggplot(df,aes(x = Time,y ,y = users,colour = users>40)) + geom_point() 

Meine Frage wird verwendet?

+1

können wir bitte ein reproduzierbares Beispiel haben? 'geom_encircle' aus der Github-Version des 'ggalt'-Pakets könnte helfen: https://github.com/hrbrmstr/ggtal/blob/master/man/geom_encircle.Rd –

Antwort

3

Um die Punkte zu verbinden, verwenden Sie geom_line (wenn Sie das nicht erhalten, erläutern Sie bitte, was Sie erreichen möchten).

Ich habe geom_encircle nicht verwendet, aber eine andere Option ist die Verwendung einer gefüllten Markierung mit der Füllung gelöscht, um die Kreise zu erstellen. Hier ist ein Beispiel, mit den eingebauten in mtcars Datenrahmen zur Erläuterung:

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    geom_point(data=mtcars[mtcars$mpg>30,], 
      pch=21, fill=NA, size=4, colour="red", stroke=1) + 
    theme_bw() 

pch=21 eine des gefüllten Markers (siehe ?pch für weitere Informationen über weitere Punktmarken). Wir setzen fill=NA, um die Füllung zu entfernen. stroke legt die Dicke der Kreisgrenze fest.

enter image description here

UPDATE: eine Zeile in dieser Tabelle hinzuzufügen, über das Beispiel mit:

ggplot(mtcars, aes(wt, mpg)) + 
    geom_line() + 
    geom_point() + 
    geom_point(data=mtcars[mtcars$mpg>30,], 
      pch=21, fill=NA, size=4, colour="red", stroke=1) + 
    theme_bw() 

Wenn jedoch (wie in meinem ursprünglichen Code für diese Grafik) Sie aes setzen Anweisung in der geom, anstatt in der ersten Aufruf an ggplot, dann müssen Sie auch eine aes Anweisung innerhalb geom_line enthalten.

+0

Vielen Dank für die schnelle Antwort. Ich habe Ihren Befehl wie folgt versucht :.ggplot (df) + geom_point (aes (df $ Zeit, df $ Benutzer)) + geom_point (data = df [df $ Benutzer> 20], aes (df $ Zeit, df $ Benutzer) , pch = 21, fill = NA, size = 4, color = "rot", stroke = 1). Aber, endete mit diesem Fehler "Fehler in' [.data.frame' (df, df $ Users> 20) : undefinierte Spalten ausgewählt ". In der CSV-Datei ist die Spalte Benutzer vorhanden und ich kann das Diagramm ohne die Bedingung data = df [df $ Users> 20] erstellen. –

+1

Sie haben ein Komma verpasst. Es sollte 'data = df [df $ Users> 20,]' sein. – eipi10

+1

In der 'df [,]' - Notation für Datenrahmen beziehen sich Ausdrücke vor dem Komma auf die Zeilenauswahl; Ausdrücke nach dem Komma beziehen sich auf die Spaltenauswahl (alle Spalten sind enthalten, wenn hinter dem Komma nichts steht). Aber wenn Sie einen Ausdruck ohne Komma einfügen (wie in Ihrem Code), nimmt R an, dass dies auf die Spaltenauswahl verweist (weil ein Datenrahmen eine besondere Art von "Liste" ist und das ist eine Art, die Elemente einer "Liste" auszuwählen) . 'df $ Users> 20' erzeugt einen logischen Vektor, der länger ist als die Anzahl der Spalten in Ihren Daten. Dies führt zu einem Fehler, weil es sich auf Spalten bezieht, die nicht existieren. – eipi10