R Plotly:如何将 config() 与 plotly_build() 结合使用?

R Plotly: How to use config() in conjunction with plotly_build()?

运行 plotly_build(p) 之前的代码和正确的绘图结果。

可重现代码

library(plotly)

#data
df1 <- data.frame(cond = factor( rep(c("A","B"), each=200) ),
                  rating = c(rnorm(200),rnorm(200, mean=.8)))

df2 <- data.frame(x=c(.5,1),cond=factor(c("A","B")))

#plot
gg <- ggplot(data=df1, aes(x=rating, fill=cond)) +
    geom_vline(aes(xintercept=mean(rating, na.rm=T))
               , color="red", linetype="dashed", size=1, name="average") +
    geom_vline(aes(xintercept=median(rating, na.rm=T))
               , color="blue", linetype="dashed", size=1, name="median", yaxt="n") +
    geom_histogram(binwidth=.5, position="dodge")

#create plotly object
p <- plotly_build(gg)

#append additional options to plot object
p$data[[1]]$hoverinfo <- "name+x" #hover options for 'average'
p$data[[2]]$hoverinfo <- "name+x" #hover options for 'median'

#display plot
plotly_build(p)
config(displayModeBar = F, showLink = F) # comment this line/config(.. out to get the plot

问题

我想使用 config 更改一些设置。但是,config() 的使用似乎覆盖了 hoverinfo 更改。

在运行配置之前(情节应该如何)...

然后 运行 config(displayModeBar = F, showLink = F)...

最后,我在 hoverinfo 行之前尝试了 运行 配置:

#create plotly object
p <- plotly_build(gg)
config(p=p,displayModeBar = F, showLink = F) #run config before 'hoverinfo' changes

#append additional options to plot object
p$data[[1]]$hoverinfo <- "name+x" #hover options for 'average'
p$data[[2]]$hoverinfo <- "name+x" #hover options for 'median'

#display plot
plotly_build(p)

但是,config 设置似乎被 displayModeBar 的 return 覆盖(下面的屏幕截图):

添加最后的 config 行对我有用:

p <- plotly_build(gg)

p$data[[1]]$hoverinfo <- "name+x" #hover options for 'average'
p$data[[2]]$hoverinfo <- "name+x" #hover options for 'median'
    
p$config <- list(displayModeBar = F, showLink = F)

源自源代码。

更新

至少从 Plotly 版本 4.5.6 开始,config 现在是 Plotly 对象的 x 属性的一部分。该行应为:

p$x$config <- list(displayModeBar = F, showLink = F)

您的代码不起作用的原因是您没有将 config 回调分配给 p。 config 无形地 returns 一个修改过的 plotly 对象。

即,这应该可以正常工作:

p <- config(p=p,displayModeBar = F, showLink = F)