好吧,我花了一段时间来热身我的plotly
技能。由于您的第一点是最困难的,所以我将反向通过您的点。
- 这可以通过操纵 -list 中的
layout
usingcategoryorder
和categoryarray
来实现yaxis
(参见 motos answer here)
- 放
showlegend=FALSE
- 那很棘手。我不得不在第一行移动你的第二行(误差线)。为其添加了颜色矢量。把它放在
plot_ly
-function中。用于split
允许按组正确着色。marker
为-list中的点添加颜色。此外,我将p.values
via转换colorRamp
为十六进制 -因为每个更简单的解决方案都不适合我。
看起来像这样:
代码(颜色条产生了一些问题):
### Set category order
yform <- list(categoryorder = "array",
categoryarray = rev(factors),
title="Factor",zeroline=F,showticklabels=T)
### set the color scale and convert it to hex
library(grDevices)
mycramp<-colorRamp(c("darkred","gray"))
mycolors<-rgb(mycramp(p.values),maxColorValue = 255)
### plot without the adjusted colorbar
library(plotly)
### Without colorbar adjustment
plot_ly(type='scatter',mode="markers",y=~factors,x=~effect.sizes,
color=~p.values,colors=grDevices::colorRamp(c("darkred","gray")),
error_x=list(array=effect.errors,color=mycolors),split=factors,showlegend=FALSE,marker=list(color=mycolors)) %>%
layout(xaxis=list(title="Effect Size",zeroline=T,showticklabels=T),yaxis=yform)
### The colorbar-adjustment kicks out the original colors of the scatter points. Either you plot them over
plot_ly(type='scatter',mode="markers",y=~factors,x=~effect.sizes,
color=~p.values,colors=grDevices::colorRamp(c("darkred","gray")),
error_x=list(array=effect.errors,color=mycolors),split=factors,showlegend=FALSE,marker=list(color=mycolors)) %>%
layout(xaxis=list(title="Effect Size",zeroline=T,showticklabels=T),yaxis=yform) %>%
colorbar(limits=c(0,1),len=0.4,title="P-Value",inherit=FALSE) %>%
add_trace(type='scatter',mode="markers",y=~factors,x=~effect.sizes,
showlegend=FALSE,marker=list(color=mycolors),inherit=FALSE) %>%
layout(xaxis=list(title="Effect Size",zeroline=T,showticklabels=T),yaxis=yform)
### or you try to set the colorbar before the plot. This results in some warnings
plot_ly() %>%
colorbar(limits=c(0,1),len=0.4,title="P-Value",inherit=FALSE) %>%
add_trace(type='scatter',mode="markers",y=~factors,x=~effect.sizes,
color=~p.values,colors=grDevices::colorRamp(c("darkred","gray")),
error_x=list(array=effect.errors,color=mycolors),split=factors,showlegend=FALSE,marker=list(color=mycolors)) %>%
layout(xaxis=list(title="Effect Size",zeroline=T,showticklabels=T),yaxis=yform)
奇怪的是,这第一点是如此难以解决并导致如此大的代码括号,因为通常plotly
很好地支持该管道逻辑,并且您会获得具有所有 - 功能的非常易读的代码add
。
我期望例如,一些add_errorbar
-function,但显然你必须在-function中添加错误栏,plot_ly
并且错误的颜色向量只有在你使用-function时才有效split
。如果有人想对此发表评论或发布具有更易读代码的替代答案,那将很有趣。