我有几个框图,我想始终显示他们鼠标悬停事件的信息.我需要它,因为我正在生成这些图表的pdf.

这是一个可重复使用的例子:

library(plotly)
set.seed(1) 
plot_ly(y = ~rnorm(500), type = "box", hoverinfo = 'y') %>%
layout(yaxis = list(hoverformat = '.2f'))

首先,我试着让鼠标悬停信息一直开着(当鼠标不在图表上时),这似乎是不可能的.

现在,我正try 将鼠标悬停时的信息添加为注释.然而,我事先没有注释的信息,因为它是由图表生成的(我的意思是,四分位数、最大值、最小值和平均值都生成到框图中).

我可以直接从图表中获得最大、最小和四分位数作为注释吗?

即使鼠标不在其上,预期结果也应在图表上显示下面的信息.

enter image description here

推荐答案

您可以手动计算Ploly为您生成的值,然后使用注释添加文本.或者,您可以使用Ploly为您生成的值并使用注释来添加文本.我预见到的唯一问题是文本可能会重叠.例如,如果较低的栅栏和最小值相同.

以下是一种使用Ploly为您生成的数据的方法.此方法使用htmlwidgets onRender().我使用toPrecision()将值四舍五入为3位有效数字.

library(plotly)
library(tidyverse)
set.seed(1) 
fig <- plot_ly(y = ~rnorm(500), type = "box") %>% # you don't need 'hoverinfo' here
  layout(yaxis = list(hoverformat = '.2f'))

fig %>% htmlwidgets::onRender(
  "function(el, x) {   /* call the plot in JS */
  hc = el.calcdata[0][0];    /* extract calculated hovertext */
  Plotly.newPlot(el.id,
  [{y: el.data[0].y, type: 'box', hoverinfo: 'skip'}],
  {yaxis: {zeroline: false}, annotations: [
  {x: .3, y: hc.lf, showarrow: false, xanchor: 'left', /* add each label*/
  text: 'lower fence: ' + hc.lf.toPrecision(3)},
  {x: .3, y: hc.uf, showarrow: false, xanchor: 'left',
  text: 'upper fence: ' + hc.uf.toPrecision(3)},
  {x: .3, y: hc.max, showarrow: false, xanchor: 'left',
  text: 'max: ' + hc.max.toPrecision(3)},
  {x: .3, y: hc.min, showarrow: false, xanchor: 'left',
  text: 'min: ' + hc.min.toPrecision(3)},
  {x: .3, y: hc.med, showarrow: false, xanchor: 'left',
  text: 'median: ' + hc.med.toPrecision(3)},
  {x: .3, y: hc.q1, showarrow: false, xanchor: 'left',
  text: 'q1: ' + hc.q1.toPrecision(3)},
  {x: .3, y: hc.q3, showarrow: false, xanchor: 'left',
  text: 'q3: ' + hc.q3.toPrecision(3)}
  ]} /*end annotations*/
  ) /* regenerate the plot with annotations and no hovertext*/
  }")

enter image description here

R相关问答推荐

使用tidy—select创建一个新的带有mutate的摘要变量

如何在格子中添加双曲曲线

R-更新面内部的栅格值

将多列合并为单独的名称—值对

将多个列值转换为二进制

如果COLSUM为>;0,则COLNAME为向量

为什么我对圆周率图的蒙特卡罗估计是空的?

我如何使用循环来编写冗余的Rmarkdown脚本?

有没有办法定制Plot(allEffects())面板标题?

在散点图中使用geom_point放置线图例

带RStatix的Wilcoxon环内检验

注释不会绘制在所有ggplot2面上

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

如何使投篮在R中保持一致

如何修改GT表中组名行的 colored颜色 ?

如何将字符类对象中的数据转换为R中的字符串

是什么打破了此Quarto仪表板中的工具提示?

将字符变量出现次数不相等的字符框整形为pivot_wider,而不删除重复名称或嵌套字符变量

使用条件格式R替换字符串中的字符

R Bupar:获取每个 case 的踪迹