4

ggplot と stat_ecdf 関数を使用して頻度プロットを作成しています。特定の X 値のグラフに Y 値を追加したいのですが、方法がわかりません。geom_point または geom_text がオプションのようですが、stat_ecdf は自動的に Y を計算するため、geom_point/text マッピングでその値を呼び出す方法がわかりません。

私の最初のプロットのサンプルコードは次のとおりです。

x = as.data.frame(rnorm(100))
ggplot(x, aes(x)) + 
stat_ecdf()

ここで、x = -1 の y 値など、特定の yx ポイントを追加するにはどうすればよいでしょうか。

4

2 に答える 2

2

あなたが試すことができます

library(tidyverse)
# data
set.seed(123)
df = data.frame(x=rnorm(100))
# Plot
Values <- c(-1,0.5,2) 
df %>% 
  mutate(gr=FALSE) %>% 
  bind_rows(data.frame(x=Values,gr=TRUE)) %>% 
  mutate(y=ecdf(x)(x)) %>%  
  mutate(xmin=min(x)) %>% 
  ggplot(aes(x, y)) +
   stat_ecdf() +
   geom_point(data=. %>% filter(gr), aes(x, y)) + 
   geom_segment(data=. %>% filter(gr),aes(y=y,x=xmin, xend=x,yend=y), color="red")+
   geom_segment(data=. %>% filter(gr),aes(y=0,x=x, xend=x,yend=y), color="red") +
   ggrepel::geom_label_repel(data=. %>% filter(gr), 
                             aes(x, y, label=paste("x=",round(x,2),"\ny=",round(y,2)))) 

ここに画像の説明を入力

アイデアはy、最初に値を追加し、表示するインデックスgrを指定するValuesことです。

編集:

このコードは実際のデータにポイントを追加するため、曲線にとっては間違っている可能性があるため、少なくとも ecdf 関数でこれらのポイントを削除することを検討する必要がありますstat_ecdf(data=. %>% filter(!gr))

于 2018-02-26T13:19:16.567 に答える