2014-12-04 27 views
3

我有一個情節,其中request是一個長值的因素,所以他們不顯示在字符軸上。如何在繪圖軸上顯示因子ID和圖例中的因子ID和值?

plot(time_taken ~ request) 

在這種情況下,數據是這樣的:

time_taken    request 
1   7 /servlet1/endpoint2/ 
2   2   /session/ 
3   10 /servlet1/endpoint3/ 
4   2 /servlet1/endpoint2/ 
5   8 /servlet4/endpoint2/ 
6   5   /session/ 
... 

問:有沒有一種方法來繪製像在X軸上的因子水平ID和因子水平ID +因素傳說中的完整字符串?

+1

你能提供最小的一組數據,也許'dput(頭(DAT,N = 20))'? – r2evans 2014-12-04 18:02:56

+0

爲了確保:'plot(time_taken_ request_type,las = 2)'或'plot(time_taken_ request_type,las = 3)'幫助你嗎? – 2014-12-04 18:27:44

+0

我已經在問題中將'request_type'重命名爲'request',但'las = 2'或'3'沒有幫助,因爲因子值相當長 – 2014-12-04 18:31:52

回答

2

您的問題中的代碼會生成boxplot,所以我認爲這就是你想要的。以下是四種方法。

這將生成一個x軸編號的箱形圖,以及圖例中的全名。

library(ggplot2) 
ggplot(df) + 
    geom_boxplot(aes(x=as.integer(request),y=time_taken, color=request))+ 
    labs(x="request") 

正如你可以看到下面,雖然與ggplot標籤(至少在本例中)可辨。

ggp <- ggplot(df) + geom_boxplot(aes(x=request,y=time_taken)) 
ggp 

在這樣我會傾向於旋轉打印的情況。

ggp + coord_flip() 

最後,這裏是在基礎R的方式,雖然國際海事組織它的吸引力最小選項。

plot(time_taken~factor(as.integer(request)),df, xlab="request") 
labs <- with(df,paste(as.integer(sort(unique(request))),sort(unique(request)),sep=" - ")) 
legend("topright",legend=labs) 

2

可能的解決方案使用ggplot2。以一些示例數據爲例。

df <- data.frame(factor = c("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 
         "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 
         "ccccccccccccccccccccccccccccccccccccc"), 

      time = c(5, 7, 9)) 

library(ggplot2) 
qplot(data = df, factor, time) + scale_x_discrete(labels = abbreviate) 

您也可以直接在你的因子水平在您的數據幀使用功能abbreviate,這樣就可以用縮寫標籤工作,還避免ggplot2,如果你不熟悉它。 看看?abbreviate