Как указать порядок слоев глифов в rbokeh?
Я пытаюсь построить визуализацию сети, используя rbokeh
пакет.
library(igraph)
library(rbokeh)
library(dplyr)
g <- random.graph.game(n=100,p=0.3)
L <- as.data.frame(igraph::layout_with_fr(g)) %>% rename(x=V1,y=V2)
url1 <- 'http://icons.veryicon.com/png/Business/Flat%20Finance/person.png'
p <- figure(xlab = "x", ylab = "y", height = 500,width=1000,xgrid=F,ygrid=F,webgl = T,
xaxes = F,yaxes = F,h_symmetry = T,v_symmetry = T) %>%
ly_lines(x = L$x,y=L$y,color = '#FFA700', width = 4, alpha = 0.2) %>%
ly_image_url(x = L$x, y=L$y, image_url = url1, w = rep(0.1,vcount(g)), h=rep(0.2,vcount(g)),
anchor = "center",lname = 'nodes')
Полученная визуализация выглядит так, как задумано, за исключением того факта, что линии нарисованы поверх глифов изображения. Есть ли способ контролировать визуальный порядок слоев таким образом, что узлы (изображения) рисуются сверху с линиями, нарисованными позади?
1 ответ
Проблема здесь заключается в использовании webgl = TRUE
, Для получения дополнительной информации см. Документацию Bokeh (см. Разделы "support" и "notes". Основные моменты: не все глифы могут быть отображены с помощью WebGL (да для линий, нет для изображений) и что "глифы, нарисованные с использованием WebGL нарисован поверх глифов, которые не нарисованы в WebGL."
Если вы избавитесь от webgl = TRUE
, вы должны быть в хорошей форме!
Кроме того, чтобы дополнительно ответить на общий вопрос о том, как управлять порядком слоев, ответ состоит в том, что за пределами граничных случаев, подобных этому, когда один слой был визуализирован с помощью WebGL, а другой нет, слои отрисовываются в том порядке, в котором они находятся. указано.