2017-02-08 3 views
0

Hallo Ich habe dieses Diagramm und ich möchte die "Form" -Spalte des Datendatenrahmens verwenden, um die Form der Punkte zu bestimmen. 2 Punkte sollten ausgefüllt werden mit Shape = 16 und der Rest ist hallow mit Shape = 1 aber es scheint nicht zu funktionieren. Irgendwelche Gedanken?Verwenden einer Spalte zum Hinzufügen von Form zu einem Diagramm ohne Füllung

time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT") 
    group = c("A","A","A","B","B","B") 
    value =c(NA, 99, 100, NA, 101, 100) 
    size =c(NA, 3, 10, NA, 5, 4) 
    dat =data.frame(time= time, group =group, value =value ,size =size, shape= c(1,16,16,1,1,1)) 
    dat 
    ggplot(dat, aes(x=time, y = value, group = group)) +geom_line() + 
     geom_point(aes (color = as.factor(group), size = size), shape=shape) + 
     scale_x_datetime(date_labels = "%H:%M:%S", breaks= date_breaks("5 min")) # + scale_fill_manual(values=c(NA,NA)) doesnt work 

Antwort

2

Sie brauchen keinen Faktor passieren zu gestalten. Sie müssen scale_shape_identity verwenden, um die Werte zu übergeben, die als tatsächliche Shapes übergeben werden.

Kreditaufnahme stark von Eric Antwort:

time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT") 
group = c("A","A","A","B","B","B") 
value =c(NA, 99, 100, NA, 101, 100) 
size =c(NA, 3, 10, NA, 5, 4) 
dat =data.frame(time= time, group =group, value =value ,size =size, shape= c(1L,16L,16L,1L,1L,1L)) 
dat 
library(ggplot2) 
ggplot(dat, aes(x=time, y = value, group = group)) +geom_line() + 
    geom_point(aes (color = as.factor(group), size = size , shape=shape)) + 
    scale_shape_identity() 

enter image description here

-1

Ihre shape ist nicht in ästhetischer Hinsicht. Um mit einem Formparameter arbeiten zu können, muss dieser in einen Faktor umgewandelt werden.

Hier ist Code, (sollten) produzieren, was Sie zu erwarten haben:

time = as.POSIXct(c("2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03","2016-05-01 00:00:01","2016-05-01 00:00:02","2016-05-01 00:00:03"), tz = "GMT") 
group = c("A","A","A","B","B","B") 
value =c(NA, 99, 100, NA, 101, 100) 
size =c(NA, 3, 10, NA, 5, 4) 
dat =data.frame(time= time, group =group, value =value ,size =size, shape= factor(c(1,16,16,1,1,1))) 
dat 
ggplot(dat, aes(x=time, y = value, group = group)) +geom_line() + 
    geom_point(aes (color = as.factor(group), size = size , shape=shape)) 
+0

Der hohlen blaue Kreise und solide rote Dreiecke erzeugt. Ich suche nach allen Kreisen, die fest und hohl sind. Ich denke, 1 und 16 sind beide Kreise, die auf? Pch schauen, aber die Formen kommen falsch herein – user3022875

+0

Sie müssen keinen Faktor zur Form übergeben. Sie müssen scale_shape_identity verwenden, um die Werte zu übergeben, die als tatsächliche Shapes übergeben werden. Die Hilfe zu Shape-Zuständen: '# Shape verwendet vier Arten von Werten: eine ganze Zahl in [0, 25], # ein einzelnes Zeichen, das dieses Zeichen als Zeichen verwendet, # a. um das kleinste sichtbare Rechteck zu zeichnen (d. h. ungefähr ein Pixel) # ein NA, um nichts zu zeichnen – Mist

Verwandte Themen