在Rplot_ly中添加箱线图显着性指示线和星号

2024-03-24

用于向绘图添加水平显着性条形图(和星形)的 Rplot_ly 命令是什么?的答案“如何绘制显着水平的箱线图?” https://stackoverflow.com/questions/29263046/how-to-draw-the-boxplot-with-significant-level and “在 ggplot 条形图和箱线图上放置星星 - 以指示显着性水平(p 值)” https://stackoverflow.com/questions/17084566/put-stars-on-ggplot-barplots-and-boxplots-to-indicate-the-level-of-significanc为 ggplot 提供良好的代码。

首先,确定显着性:

library(lsmeans)
lsmeans(lm(data = iris, Sepal.Width ~ Species), pairwise ~ Species)
     $contrasts
     contrast               estimate         SE  df t.ratio p.value
     setosa - versicolor       0.658 0.06793755 147   9.685  <.0001
     setosa - virginica        0.454 0.06793755 147   6.683  <.0001
     versicolor - virginica   -0.204 0.06793755 147  -3.003  0.0088

下面是该图的示例 R 代码。如何添加线条和星号?

library(plotly)
p <- plot_ly()
p <- add_boxplot(p, data = iris, x = ~Species, y = ~Sepal.Width, 
                 color = ~Species, boxpoints = "all", jitter = 0.3, pointpos = 0)
# p <- add_paths(p, data = iris, ???)
# p <- add_line(p, data = iris, ???)
p

可怕的黑客解决方案给出了所需的输出

  • 添加括号作为单独的线迹
  • 将重要性标记添加为隐藏条形图顶部的标签
  • 通过隐藏辅助分类值layout

使用注释的问题是无法将星号放在正确的位置,三个箱线图意味着三个分类 x 值。新的 x 值通过条形图添加。

library(plotly)
p <- plot_ly()
p <- add_bars(p, 
              x = c('setosa', 'setosa0', 'versicolor', 'versicolor0', 'virginica'),
              y = c(3.5, 4.6, 2.5, 4.1, 3),
              opacity=1,
              showlegend = F,
              marker=list(line = list(color='rgba(0,0,0,0'),
                          color = 'rgba(0,0,0,0'),
              text = c('', '**', '', '*', ''),
              textposition = 'outside',
              legendgroup = "1"
)
p <- add_lines(p, 
               x = c('setosa', 'setosa', 'versicolor', 'versicolor'),
               y = c(4.5, 4.6, 4.6, 4.5),
               showlegend = F,
               line = list(color = 'black'),
               legendgroup = "1",
               hoverinfo = 'none'
)

p <- add_lines(p, 
               x = c('versicolor', 'versicolor', 'virginica', 'virginica'),
               y = c(4.0, 4.1, 4.1, 4.0),
               showlegend = F,
               line = list(color = 'black'),
               legendgroup = "1",
               hoverinfo = 'none'
)


p <- add_boxplot(p, data = iris, x = ~Species, y = ~Sepal.Width, 
                 color = ~Species, boxpoints = "all", jitter = 0.3, pointpos = 0,
                 legendgroup="1")


p <- layout(p,
            xaxis = list(tickmode = 'array',
                         tickvals = c('setosa', 'sf', 'versicolor', 'vet', 'virginica'),
                         ticktext = c('setosa', '', 'versicolor', '', 'virginica')),
            yaxis = list(range = c(0, 5))
            )
p

下图显示了用于使图表正确的所有隐藏痕迹:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Rplot_ly中添加箱线图显着性指示线和星号 的相关文章

随机推荐