我认为这很明显是 subplot in plotly 中的一个错误,可以弥补,但它很丑陋并且需要维护。如果您将其发布到 plotly 站点并查看布局中的数据,您可以看到这一点。请注意,适当的坐标系似乎是:
- "x1","y1" - 第一个图 - 左上角
- "x2","y2" - 第二个图 - 右上角
- "x3","y3" - 第三个图 - 左下角
- "x4","y4" - 第 4 个图 - 留给读者练习
这里有几个问题:
- 在没有正确的坐标参考的情况下将形状添加到布局中。
- 第 2 和第 4 图中的 y 坐标系与第 1 和第 3 图中的不同,可能与下一个问题有关。
- 第一个和第三个图的 x 轴未绘制,可能坐标系也未正确设置,但这些结构似乎很混乱,所以我没有仔细查看。
- 我认为您的代码中有错字,您在创建
edge_shape 时指定了两次 x0。
无论如何,这里有一些代码可以满足您的需求(但存在轴错误)。
library(plotly)
library(igraph)
tree <- make_tree(127,2)
tree_layout <- layout_as_tree(tree)
tree_layout_df <- as.data.frame(tree_layout)
Xn <- tree_layout_df[,1]
Yn <- tree_layout_df[,2]
get_edgeshape <- function(xref,yref,xfak=1,yfak=1){
edge_shapes = list(
type="rect",
line=list(color="#030303",width=5),
opacity=0.3,
x0 = 0*xfak, x1 = 5*xfak,
y0 = 0*yfak, y1 = 5*yfak,
xref=xref,
yref=yref
)
}
reg_tree_plot <- plot_ly() %>%
add_trace(x=~Xn[0:63], y=~Yn[0:63], type='scatter', width=700, height=500)
ycor1 <- 2
ycor2 <- 2*1.125
tree_layout <- layout(reg_tree_plot, shapes=get_edgeshape("x1","y1",yfak=ycor1))
x <- layout(reg_tree_plot, shapes=get_edgeshape("x2","y2",yfak=ycor2))
y <- layout(reg_tree_plot, shapes=get_edgeshape("x3","y3",yfak=ycor1))
z <- layout(reg_tree_plot, shapes=get_edgeshape("x4","y4",yfak=ycor2))
sub <- subplot(tree_layout,y,z,x,
nrows=2,
margin=0.05,
shareX=F,
shareY=F)
sub
结果如下:
请注意,这不是一个很好的解决方案,如果您更改布局中的任何内容,则需要调整参数。只有巧妙地修复才能真正解决痛苦。所以我把它作为一个问题提交到 github 网站上。
我正在使用来自 github (4.7.0) 的最新 plotly,与 devtools::install_github("ropensci/plotly") 一起安装,这是我的 sessionInfo():
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] igraph_1.0.1 plotly_4.7.0 ggplot2_2.2.1
loaded via a namespace (and not attached):
[1] Rcpp_0.12.10 magrittr_1.5 devtools_1.12.0 munsell_0.4.3 xtable_1.8-2 viridisLite_0.2.0 colorspace_1.3-2
[8] R6_2.2.0 rlang_0.1.1 httr_1.2.1 plyr_1.8.4 dplyr_0.5.0 tools_3.4.0 grid_3.4.0
[15] gtable_0.2.0 DBI_0.6-1 git2r_0.18.0 withr_1.0.2 crosstalk_1.0.0 htmltools_0.3.6 yaml_2.1.14
[22] lazyeval_0.2.0 digest_0.6.12 assertthat_0.2.0 tibble_1.3.1 shiny_1.0.3 tidyr_0.6.3 purrr_0.2.2.2
[29] htmlwidgets_0.8 curl_2.5 mime_0.5 memoise_1.1.0 compiler_3.4.0 scales_0.4.1 jsonlite_1.4
[36] httpuv_1.3.3