我有一个情节,其中request
是一个长值的因子,所以它们不会显示在char轴上。
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 +因子完整字符串?
答案 0 :(得分: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
答案 1 :(得分:2)
你问题中的代码会生成一个箱形图,所以我认为这就是你想要的。以下是四种方法。
这将生成一个箱形图,其中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的一种方式,虽然IMO是最不吸引人的选择。
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)