2017-07-25 14 views
0

Rにggplot2を使用して折れ線グラフをプロットしています。特定のしきい値を上回るポイントを適切な日付形式で指定したいとします。ggplotの適切な書式でポイントにラベルを付けてR

グラフをプロットするための私のコードは次のとおりです。

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)) 

私のグラフは次のようになります。

enter image description here

私は適切に(一定のしきい値を超えている)これらの点にラベルを付けたいです私のデータセットには日付形式があります。 私は私のグラフは次のようになり、これを使用して

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

を試してみました:

enter image description here そして

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

そして

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

そして

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

データセットの文字列:サンプルデータがどのように見える

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 ... 

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

をあなたの姿ができるように、例のデータを入力してください他人によって生成される。 –

+0

[geom \ _pointのラベルポイント](https://stackoverflow.com/questions/15624656/label-points-in-geom-point)の重複の可能性あり –

+0

テキストラベルを日付としてフォーマットしているため、重複していません – user101089

答えて

0

OK、このコードを試してみてください。

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

これを試してみると、このエラーが表示されます。 エラーin unclass(x)/ 86400:バイナリ演算子の非数値引数 –

+0

変更を加えました。さらに質問がある場合はお知らせください。 – AK88

+0

ええ、私はそれを得た。ありがとう!! ラベルの重複を避ける方法はありますか? –

関連する問題