2013-04-24 42 views
0

我打算使用ggplot爲服務器着色15個cpu平均值來創建熱圖。數據爲每天15分鐘24小時。如果CPU利用率在20%,30%,40%之內,則需要顯示不同的顏色。當我執行以下操作時,我的圖表看起來不正確。它看起來像顏色代表不同的CPU利用率。以下是一個示例數據。任何想法,我如何解決這個問題?ggplot2熱圖將顏色分配給中斷

dput(head(y,20)) 
structure(list(DATE = structure(c(15795, 15795, 15795, 15795, 
15795, 15795, 15795, 15795, 15795, 15795, 15795, 15795, 15795, 
15795, 15795, 15795, 15795, 15795, 15795, 15795), class = "Date"), 
    Time = c("20:14", "20:29", "20:44", "20:59", "21:14", "21:29", 
    "21:44", "21:59", "22:14", "22:29", "22:44", "22:59", "23:14", 
    "23:29", "23:44", "23:59", "00:14", "00:29", "00:44", "00:59" 
    ), CPU = c(34.2, 34.6, 33.9333333333333, 33.2666666666667, 
    36.6333333333333, 33.1333333333333, 27.2666666666667, 26.4333333333333, 
    27, 26.6, 26.3666666666667, 26.5666666666667, 26.0666666666667, 
    24.9333333333333, 24.9333333333333, 25.3, 28.4857142857143, 
    23.5, 20.8, 19.2666666666667)), .Names = c("DATE", "Time", 
"CPU"), row.names = 2861:2880, class = "data.frame") 

pals<-c("#F0FFFF","#F0FFFF","#AEEEEE","#ADD8E6","#00BFFF","green","#E4F224","#C9821E", "#FF0000") 
vals<-c(0.19,0.29,0.39,0.49,0.59,0.69,0.79,0.89,0.99) 
brk<- c(20, 30, 40, 50, 60, 70, 80, 90, 100) 

ggplot(y, aes(DATE, Time, fill=CPU)) + geom_tile() + theme_bw() + 
     scale_fill_gradientn(name="CPU Utilization", colours=pals, 
          values=vals,limits=c(0,100), breaks = brk) 

回答

1

嗯..我一定會錯過一些東西。代碼看起來不錯。對於例如,如果我設置

y$CPU <- seq(5,100,5) 

和情節,

ggplot(y, aes(DATE, Time, fill=CPU)) + geom_tile() + theme_bw() + 
     scale_fill_gradientn(name="CPU Utilization", colours=pals, 
          values=vals,limits=c(0,100), breaks = brk) 

我得到以下情節,符合你的要求:enter image description here

+0

我需要有9個不同的斷裂,以及不同的顏色他們全部。我如何根據值定義參數? – user1471980 2013-04-24 20:32:12

+1

@ user1471980'scale_fill_manual'。 – Gregor 2013-04-24 21:36:39