我在三个xy
group
中拥有三个integer
的{{1}}数据:
age
我的目的是使用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(3,500),rep(8,600),rep(24,400),rep(3,500),rep(8,400),rep(24,600),rep(3,500),rep(8,500),rep(24,500)),
group = c(rep("A",1500),rep("B",1500),rep("C",1500)))
的{{1}}将R
绘制为plotly
,如下所示:
value
并将violin
拟合线添加到每个library(plotly)
library(dplyr)
df$age <- factor(df$age)
plot_ly(x=df$group,y=df$value,type='violin',name=df$age,color=df$age,box=list(visible=T)) %>%
layout(violinmode='group')
中,如果可能,还添加标准错误线。
因此,我首先将每个group
的拟合线添加到lm
中:
df
然后,我尝试只用一根group
的小提琴加一条适合的线:
df$age <- as.integer(df$age)
df$fitted.value <- unlist(lapply(c("A","B","C"),function(g) lm(value ~ age,dplyr::filter(df,group == g)) %>% fitted.values()))
但这给出了group
的长长列表:
df <- df %>% dplyr::filter(group == "A")
plot_ly(x=df$age,y=df$value,type='violin',color=df$age,box=list(visible=T)) %>%
add_trace(x=df$age,y=df$fitted.value,mode="lines")
有什么主意如何为所有warnings
添加趋势线以及最佳地添加其标准误差线?
答案 0 :(得分:2)
也许您可以使用此解决方案。首先,用一个新的df加上一个描述该组和 subgroup 的附加变量。
另一个DF建立group_by(group, moreA)
的平均值。
使用ggplot
进行绘制,并用来自第一个DF的数据geom_violin
和来自第二个geom_point
的{{1}}以及{{1 }}。 sum_res
取geom_smooth
的平均值进行拟合。
此后,将geom_smooth
对象放入sum_res
。
不幸的是,在此reprex中没有出现ggplot
这样的悬停行为。但它可以在RStudio中工作
ggplotly