R:选择正确的图以创建包含 3 个子组、每个点的样本量以及子组之间的显着性差异的折线图

R: choose the right plot to create a line chart with 3 subgroups, sample size for each point, and significance differences between the subgroups

提问人:Maya Eldar 提问时间:6/19/2022 最后编辑:Maya Eldar 更新时间:6/20/2022 访问量:284

问:

我正在尝试创建一个像这样的线图(在 Powerpoint 上制作):enter image description here

显示体重对年龄(体重~年龄)的依赖性,用于 3 个亚组(因此每组都有自己的线)。我还希望图表显示:

  • 每个点的样本量,即每个年龄每个亚组的个体数量。
  • 每个年龄的亚组之间的显着性差异。(TukeyHSD 结果)

还有一件重要的事情:我将不得不为几个参数(如长度~年龄和宽度~年龄)重复这些图表,并且可能还必须多次执行这些操作,因此我真的很想避免手动插入解决方案,例如,如果可能的话。geom_text

我尝试了几种选择,但在某些时候一直“卡住”。例如:

我试过这段代码:

plot_morphologic <- ggplot(data = weight_table, 
       mapping = aes(x = as.numeric(age), 
                     y = weight, color=POPULATION))+
  geom_line(se=TRUE)

但这为 3 个种群创造了一条线......

我也试过这个:

plot_morphologic <- ggline(data=weight_table, x = "age", y = "weight", add = "mean_sd",
       color = "POPULATION")+
  stat_compare_means(aes(group = POPULATION), method = "anova", label = "p.signif", 
                     label.y = c(40),na.rm=F)+
  stat_n_text(group="POPULATION")

但无法将样本量拆分为每个子组,也无法添加子组之间差异的显著性。

我的数据示例:

weight_table1
# A tibble: 246 × 4
   ID         POPULATION age weight
   <chr>      <chr>  <chr>       <dbl>
 1 Shere Khan A      0           13.4 
 2 Shere Khan A      1           14.2 
 3 Shere Khan A      2           17.4 
 4 Serafina   B      0            5.19
 5 Serafina   B      1           15.3 
 6 Serafina   B      2           NA   
 7 Kaa        A      0            7.68
 8 Kaa        A      1            6.92
 9 Kaa        A      2           19.4 
10 Shenzi     C      0            6.96

tnx!!

r ggplot2 统计 量 线图 样本大小

评论


答:

0赞 cdalitz 6/20/2022 #1

可以使用以下基本 R 函数实现所有这些功能:

  1. 用参数绘制轴和第一条线,并设置为要绘制的最大范围(通常自动计算为 或 左右)。plotxlimylim1.1*range(yourdata$yourrow)
  2. 用 绘制另外两条线。lines
  3. 用 和 绘制点和误差线,如本答案中所述。请注意关于“特别直观的参数pointsarrowscode=3" ;-)
  4. 添加带有 .text

我不明白为什么最后一步是重复用例的问题,因为您可以使用 .sprintf("n=%i", nrow(yourdata))

评论

0赞 Maya Eldar 6/20/2022
谢谢!您能否解释一下如何“使用 sprintf(”n=%i“, nrow(yourdata)))以编程方式创建标签文本”?我是否手动计算样本量和显著性水平?如何添加它们?一次还是一个接一个?我发现在为统计而制作的程序中没有这方面的功能有点连线......哈哈
0赞 cdalitz 6/20/2022
当然,这些常见任务也有功能。若要计算因子的水平数,可以调用其中 x 是分类变量。对于数据框中的样本数量,有 和 。您可以通过在问号前加上前缀来查找更多信息,例如 等。ststistical 编程语言的要点是,你不厌其烦地使用开箱即用的东西,但你可以编写自己的全自动分析和可视化程序。length(levels(x))nrow(df)ncol(df)?levels
0赞 cdalitz 6/20/2022
还有一个提示:要了解如何提取 的结果,请输入并阅读 “Value” 部分,该部分描述了返回值。显然,您对返回值的“p adj”感兴趣。TukeyHSD?TukeyHSD