2017-12-21 17 views
1

私は1つの従属変数と複数の独立変数からなるデータフレームを持っています。関係のグループは異なるテストから取られました(しかし、これは私が会った問題を解決するために重要ではありません)。GGRidges:単一密度プロットが高すぎる

私はパッケージggridgesを使用して、各関係の密度プロットを持つ1つのグラフを表しています。 1つの関係に1つの値しかない場合、ggridgesは密度プロットではなくポイントを生成します。私の問題は、その場合、密度プロットが上のスペースと重なっていることです。おそらく、ggridgesは別の密度プロットを見ることができず、以下の密度プロットが取ることができる空間を拡大するでしょう。 "scale"オプションを使用すると、2つの密度プロットの重なりを避けることができますが、密度プロットと点の重なりを避けることはできません。

スケールを0.5に設定すると、問題は解決できますが、これはそれぞれの密度プロットが小さくなるため、これが最善の方法ではありません。また、他人と重複しないもの。

以下、私が遭遇した問題のグラフを生成する再現可能な例を添付しました。 誰にも助けてくれてありがとう。何が起こっている

library(magrittr) 
library(dplyr) 
#> 
#> Attaching package: 'dplyr' 
#> The following objects are masked from 'package:stats': 
#> 
#>  filter, lag 
#> The following objects are masked from 'package:base': 
#> 
#>  intersect, setdiff, setequal, union 
library(forcats) 
library(ggplot2) 
library(ggridges) 
library(RCurl) 
#> Carico il pacchetto richiesto: bitops 

y_ex <- c("y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1","y1") 
x_ex <- c("x1","x1","x2","x3","x3","x3","x3","x3","x3","x4","x4","x4","x5","x5","x5","x5","x5","x5","x5","x5","x5","x5","x5") 
value_ex <- c(0.26,0.40,0.47,0.72,0.71,0.69,0.74,0.73,0.24,0.39,0.43,0.46,0.21,0.18,0.14,0.10,0.16,-0.10,-0.11,0.56,0.50,0.49,0.43) 

data_ex <- data.frame(y_ex,x_ex,value_ex) 

r_ex <- data_ex %>% 
    dplyr::mutate(x_ex = forcats::fct_reorder(x_ex, desc(value_ex), fun = mean)) 

r_ex %>% 
    ggplot(aes(x = value_ex, y = x_ex)) + 
    ggtitle(paste0("Predictors of ",y_ex)) + 
    geom_density_ridges(fill = "royalblue", 
         scale = 0.9, 
         color = NA, 
         alpha = 0.7, 
         rel_min_height = 0.01) + 
    geom_point(size = 0.5, alpha = 0.5, pch = 16) + 
    geom_point(data = r_ex %>% group_by(x_ex) %>% dplyr::summarise(value_ex = mean(value_ex)), 
      color = "firebrick", 
      pch = 16, 
      alpha = 0.5) + 
    scale_y_discrete("") + 
    scale_x_continuous("", limits = c(0, 1)) + 
    theme_grey(base_size = 16, base_family = "serif") + 
    theme(plot.title = element_text(hjust = 0.5, 
            lineheight = .8, 
            face = "bold", 
            margin = margin(10, 0, 20, 0), 
            color = "gray15"), 
     legend.position = "none") 
#> Picking joint bandwidth of 0.0453 
#> Warning: Removed 2 rows containing non-finite values (stat_density_ridges). 
#> Warning: Removed 2 rows containing missing values (geom_point).` 

enter image description here

答えて

1

はスケーリングヒューリスティックが欠落しているデータによって混乱していることです。スケーリングヒューリスティックはベースラインのy値の合計範囲をとり、グループ数-1で割ります(here参照)。

スケールスケーリングのヒューリスティックは正確に2倍の基準スケールを生成します。したがって、レベルがない場合はscale = 0.9と同じ効果を得るにはscale = 0.45を使用する必要があります。

ディストリビューションの下の領域は同じサイズ(ある単位では1つ)である必要があるため、すべての領域を一緒にスケーリングする必要があることに注意してください。あなたのx5ディストリビューションは、バイモーダルなので、それほど広いものではありません。

関連する問題