2017-07-25 9 views
0

Ich zeichne ein Liniendiagramm mit Ggplot2 in R. Ich möchte die Punkte über einem bestimmten Schwellenwert im richtigen Datumsformat benennen.Beschriften Sie die Punkte als Datum im richtigen Format in ggplot in R

Mein Code die Grafik zum Plotten ist:

enter image description here

Ich möchte beschriften diese Punkte mit der richtigen (die über einem bestimmten Schwellenwert sind):

ggplot(DateSubset1, aes(TimeStamp)) + 
    geom_line(aes(y = CPU, colour = "Orange")) + 
    geom_line(aes(y = MEM), colour = "Black")+ 
    scale_x_datetime(date_break = "1 days")+ 
    geom_point(aes (x= TimeStamp, y=CPU), size = 1,colour = "Purple", 
     subset(DateSubset1, CPU>25))+ 
    geom_point(aes (x= TimeStamp, y=MEM), size = 1,colour = "Blue", 
     subset(DateSubset1, MEM>10))+ 
    scale_y_continuous(breaks = c(5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80)) 

Meine Grafik sieht wie folgt aus Datumsformat wie mein Datensatz hat. Ich habe

versucht
geom_text(aes(y=CPU, label= ifelse(CPU>25, TimeStamp, ''))) 

Mit dieser mein Graph wie folgt aussieht:

enter image description here Und

geom_text(aes(y= CPU,label= ifelse(CPU>25, format(TimeStamp), format = 
"%y%m%d %h%m%s",''))) 

Und

geom_text(aes(y= CPU, label=ifelse(CPU>25, as.Date(TimeStamp), ''))) 

Und

geom_text(aes(y= CPU, label=ifelse(CPU>25, as.Date.POSIXct(TimeStamp), ''))) 

String von Daten-Set:

data.frame':  
1420 obs. of 3 variables: 
$ TimeStamp: POSIXct, format: "2017-06-28 07:03:02" "2017-06-28 07:06:01" 
"2017-06-28 07:09:01" ... 
$ CPU  : num 0.9 0.8 12.2 3.7 2.3 1.7 1.4 1.1 1 0.9 ... 
$ MEM  : num 1.7 1.8 1.5 1.8 1.8 1.8 1.9 1.9 1.9 2.1 ... 

die Beispieldaten wie folgt aussehen:

TimeStamp    CPU MEM 
2017-06-28 07:03:02  0.9 1.7 
2017-06-28 07:06:01  0.8 1.8 
2017-06-28 07:09:01  12.2 1.5 
2017-06-28 07:12:01  3.7 1.8 
2017-06-28 07:15:01  2.3 1.8 
+0

Bitte Beispiel Daten zur Verfügung stellen, so dass Ihre Figur kann von anderen generiert werden. –

+0

Mögliches Duplikat von [Beschriftungspunkte in geom \ _point] (https://stackoverflow.com/questions/15624656/label-points-in-geom-point) –

+0

Kein Duplikat, da das Problem die Textbeschriftung als Datum formatiert – user101089

Antwort

0

OK, diesen Code versuchen:

zz = ' 
    CPU MEM 
    0.9 1.7 
    0.8 1.8 
    12.2 1.5 
' 

df <- read.table(text = zz, header = TRUE) 
df 

TmS = c("2017-06-28 07:03:02", "2017-06-28 07:06:01", "2017-06-28 07:09:01") 
df = cbind(TmS, df) 
df$TmS = as.character(df$TmS) 

label = as.character(ifelse(df$CPU>10, df$TmS, '')) 
df$TmS = as.POSIXct(df$TmS) 


ggplot(df, aes(TmS)) + 
    geom_line(aes(y = CPU, colour = "Orange")) + 
    geom_line(aes(y = MEM), colour = "Black")+ 
    scale_x_datetime(date_break = "1 days")+ 
    geom_point(aes (x= TmS, y=CPU), size = 1,colour = "Purple", 
      subset(df, CPU>10))+ 
    geom_point(aes (x= TmS, y=MEM), size = 1,colour = "Blue", 
      subset(df, MEM>1.5))+ 
    scale_y_continuous(breaks = c(5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80))+ 
    geom_text(aes(y= CPU, label=label)) 
+0

Wenn ich dies versuchte, sehe ich diesen Fehler- Fehler in unclass (x)/86400: Nicht-numerisches Argument zum binären Operator –

+0

Ich habe Änderungen vorgenommen. Lassen Sie mich wissen, wenn Sie weitere Fragen haben. – AK88

+0

Ja, ich habe es verstanden. Vielen Dank!! Gibt es eine Möglichkeit, die Überlappung von Etiketten zu vermeiden? –

Verwandte Themen