1

1 つの従属変数と複数の独立変数で構成されるデータ フレームがあります。関係のグループはさまざまなテストから取得されました (ただし、これは私が遭遇した問題を解決するために重要ではありません)。

パッケージggridgesを使用して、各関係の密度プロットで1つのグラフを表しています。1 つの関係に値が 1 つしかない場合、ggridge は密度プロットではなく点を生成します。私の問題は、その場合、下の密度プロットが上のスペースと重なることです。おそらく、ggridges は別の密度プロットを認識せず、以下の密度プロットが使用できるスペースを拡大するためです。オプション「スケール」は、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).`

ここに画像の説明を入力

4

1 に答える 1