Как указать порядок слоев глифов в 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, а другой нет, слои отрисовываются в том порядке, в котором они находятся. указано.

Другие вопросы по тегам