2017-07-26 3 views
1

プロットの軸範囲を関心領域に限定して、特定のフィーチャ(例えば中央値&四分位の位置)を強調したいことがあります。それにもかかわらず、(切り捨てられた)軸の範囲外にある値の数/割合は何かを明確にすることが重要です。boxplot内の軸範囲外の値の数を表示する(Rのggplot2を使用)

Rでggplot2を使用しているときにこれを表示しようとしていますが、ggplot2でこれを行うbuildt-in方法があるかどうかは疑問です。私は実際には、これを表示する特定の方法に特に結びついていません(例えば、プロットの端に別の記号が付いたジッタ付きの点、範囲外の割合を示す方法、何らかの形で情報を伝えるディスプレイ)。

以下は、いくつかのモックデータと、私が念頭に置いているコードの種類(コードの下に表示されている)を作成するコードですが、y軸の範囲外のデータ量を正確に示していません。

library(ggplot2) 
set.seed(seed=123) 
group <- rep(c(0,1),each=500) 
y <- rcauchy(1000, group, 10) 
mockdata <- data.frame(group,y) 

ggplot(mockdata, aes(factor(group),y)) + geom_boxplot(aes(fill = factor(group))) + coord_cartesian(ylim = c(-40,40)) 

enter image description here

+0

。 'coord_cartesian(ylim = quantile(mockdata $ y、probs = c(0.10,0.90)))'とすることで、カットされたポイントの割合を表すことができます。 –

+0

サンプルコードは、2つのグループのプールされたデータの10番目と90番目のパーセンタイルで切り捨てられます。しかし、これらは2つのグループで異なるかもしれません、私は実際にプロット上の切り捨てに関する情報を表示する何らかの方法を期待していました。 –

答えて

0

あなたは、事前にこれらの値を計算し、それらを表示することを経由して、例えばgeom_text:あなたは `quantile`機能を使用することができます

library(dplyr) 
upper_lim <- 40 
lower_lim <- -40 
mockdata$upper_cut <- mockdata$y > upper_lim 
mockdata$lower_cut <- mockdata$y < lower_lim 
mockdata$group <- as.factor(mockdata$group) 
mockpts <- mockdata %>% 
    group_by(group) %>% 
    summarise(upper_count = sum(upper_cut), 
       lower_count = sum(lower_cut)) 

ggplot(mockdata, aes(group, y)) + 
    geom_boxplot(aes(fill = group)) + 
    coord_cartesian(ylim = c(lower_lim, upper_lim)) + 
    geom_text(y = lower_lim, data = mockpts, 
       aes(label = lower_count, x = group), hjust = 1.5) + 
    geom_text(y = upper_lim, data = mockpts, 
       aes(label = upper_count, x = group), hjust = 1.5) 

enter image description here

関連する問題