使用因子水平

时间:2016-03-09 16:43:34

标签: r plot ggplot2

我的数据框d

str(d)
'data.frame':   10821 obs. of  2 variables:
 $ Actual : Factor w/ 10 levels "SA103","SA111",..: 6 6 6 6 9 9 6 9 6 6 ...
 $ Planned: Factor w/ 17 levels "SA103","SA111",..: 1 6 6 6 1 9 6 9 6 6 ...

我正在使用 ggplot2 和以下代码

进行绘图
ggplot(d, aes(x=Actual, y=Planned))   + geom_point()

Plot Result

我希望在每个点显示观察次数,以便轻松识别Planned&之间偏差大的位置。实际水平。 (例如:如果显示SA121(计划)移至SA103(实际)~1000次,那么这是一个严重问题。

如何将数据标签放入此类情节中,数据标签显示观察次数(对于给定的x,y条件)?

1 个答案:

答案 0 :(得分:4)

如果你真的需要在每个点看到obs的数量,你可以创建自己的函数来提取N,然后在ggplot中的stat_summary中调用该函数:

library(ggplot2)
Actual <- sample( LETTERS[1:10], 5000, replace=TRUE, prob=c(rep(0.25, 10)))
Planned <- sample( LETTERS[1:17], 5000, replace=TRUE, prob=c(rep(0.25, 17) ))
d <-as.data.frame(cbind(Actual, Planned))

N <- function(x){
  return(data.frame(y = mean(x), label = length(x)))
 }

  ggplot(d, aes(x=Actual, y=Planned))   +stat_summary(fun.data = N, geom =  "text")

enter image description here   或者,您可以使用geom_count()根据观察次数调整点的大小。

ggplot(df, aes(x=Actual, y=Planned))  + geom_point() + geom_count()

enter image description here