在箱线图中添加因子信息作为注释

时间:2016-05-03 07:56:35

标签: r ggplot2 boxplot

我正在尝试制作一个包含每个地块样本数量的箱线图。它显示了两个变量的信息。我的代码如下:

give.nint <- function(SCPT){return(c(y = median(SCPT) * 1.06, label = length(SCPT)))}

ggplot(aes(y = speed, x = LITH, fill = SET), data = SCPT) +
  geom_boxplot() +
  stat_summary(fun.data = give.nint, geom = 'text') +
  stat_summary(fun.data = give.nloc, geom = 'text')

这个有效! nint表示我的SCPT表中的样本数。

现在我想要绘制其他内容。所有样本都分布在多个站点或位置(因此nloc)这个数字是我想在箱箱图中显示的第二个数字。可以使用表格中的“名称”列(或X和/或Y)来标识位置。我使用确定每个位置的样本数量;

give.nloc <- function(SCPT){return(c(y = median(SCPT) * 0.94, label = length(unique(SCPT$Name))))}     #[FIRST ATTEMPT]
give.nloc <- function(SCPT){return(c(y = median(SCPT) * 0.94, label = length(unique(SCPT[,2]))))}      #[SECOND ATTEMPT]

ggplot(aes(y = speed, x = LITH, fill = SET), data = SCPT) +
  geom_boxplot() +
  stat_summary(fun.data = give.nint, geom = 'text') +
  stat_summary(fun.data = give.nloc, geom = 'text')

现在这些函数与nint非常相似,但不知怎的,我不能像这样定义标签。

在我第一次尝试时,我收到了这条警告信息:

  

stat_summary()中的计算失败:$运算符无效   原子载体

第二次尝试产生了此警告消息:

  

stat_summary()中的计算失败:维数不正确

我现在正在考虑在我的数据框中添加另一列,其中包含所有光刻集组合的位置数(这些是aes()中的因子,因此对于每个光刻集组合,绘制一个框),但我宁愿保持数据尽可能干净......你有什么想法吗?

为清楚起见,这是我表中数据的一部分 - 我省略了一些与此问题无关的变量。

'data.frame':   4857 obs. of  10 variables:
 $ SET    : Factor w/ 2 levels "2014","2015": 2 2 2 2 2 2 2 2 2 2 ...
 $ Name   : chr  "SITE1" "SITE1" "SITE1" "SITE1" ...
 $ X      : num  111221 111221 111221 111221 111221 ...
 $ Y      : num  416143 416143 416143 416143 416143 ...
 $ speed     : num  150 150 140 120 ...
 $ STRAT  : chr  "Q" "Q" "R" "R" ...
 $ LITH   : chr  "A" "B" "B" "B" ...

1 个答案:

答案 0 :(得分:0)

语句median(SCPT)表示SCPT是一个向量。如果它确实是一个向量,则警告消息是有意义的

汇总函数仅对单个矢量值进行操作。如果您想在摘要中引入更多变量,请不要认为stat_summary是解决方案。