0

回帰傾向線の追加xyを使用してプロットしているデータをグループ化しました。Rggplot2 geom_violin

データは次のとおりです。

library(dplyr)
library(plotly)
library(ggplot2)

set.seed(1)
df <- data.frame(value = c(rnorm(500,8,1),rnorm(600,6,1.5),rnorm(400,4,0.5),rnorm(500,2,2),rnorm(400,4,1),rnorm(600,7,0.5),rnorm(500,3,1),rnorm(500,3,1),rnorm(500,3,1)),
                 age = c(rep("d3",500),rep("d8",600),rep("d24",400),rep("d3",500),rep("d8",400),rep("d24",600),rep("d3",500),rep("d8",500),rep("d24",500)),
                 group = c(rep("A",1500),rep("B",1500),rep("C",1500))) %>%
  dplyr::mutate(time = as.integer(age)) %>%
  dplyr::arrange(group,time) %>%
  dplyr::mutate(group_age=paste0(group,"_",age))

df$group_age <- factor(df$group_age,levels=unique(df$group_age))

そして私の現在のプロット:

ggplot(df,aes(x=group_age,y=value,fill=age,color=age,alpha=0.5)) + 
  geom_violin() + geom_boxplot(width=0.1,aes(fill=age,color=age,middle=mean(value))) + 
  geom_smooth(data=df,mapping=aes(x=group_age,y=value,group=group),color="black",method='lm',size=1,se=T) + theme_minimal()

ここに画像の説明を入力

私の質問は次のとおりです。

  1. alphaの部分を取り除くにはどうすればよいlegendですか?
  2. をではなくにx-axis ticksしたいのですが、これは、ラベルがの中心にあるper eachを意味します。すべての がすべての を持っているとは限らない状況を考えてみましょう。たとえば、特定のが を 2 つしか持たず、これら 2 つの のみを表示すると確信している場合、 を 2 つの の間の中央に配置したいと考えています。 .df$groupdf$group_agetickgroupgroupgroupgroupagegroupageggplotagetickage

もう 1 つの質問:

また、適合した各勾配の p 値をそれぞれの上にプロットするとよいでしょうgroup

私は試した:

library(ggpmisc)
my.formula <- value ~ group_age
ggplot(df,aes(x=group_age,y=value,fill=age,color=age,alpha=0.5)) + 
  geom_violin() + geom_boxplot(width=0.1,aes(fill=age,color=age,middle=mean(value))) + 
  geom_smooth(data=df,mapping=aes(x=group_age,y=value,group=group),color="black",method='lm',size=1,se=T) + theme_minimal() +
  stat_poly_eq(formula = my.formula,aes(label=stat(p.value.label)),parse=T)

warningしかし、次のメッセージで上記と同じプロットを取得します。

Warning message:
Computation failed in `stat_poly_eq()`:
argument "x" is missing, with no default 
4

2 に答える 2