dim=3 plotting non-edges

Aberta
#116 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
julia, plotly

Direção de pesquisa

Comece no ponto de entrada graphplot e reproduza o exemplo de Julia fornecido com dim=3, curvature=0 e posições explícitas x, y e z. Verifique por que um grafo com uma aresta parece conter arestas adicionais e compare o caminho de arestas retas com o caminho curvo, mais lento; considera-se concluído quando as arestas plotadas correspondem ao grafo e os gráficos 3D com curvatura zero são significativamente mais rápidos.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

I posted the following on discourse.julialang.org. I am hoping somebody can help me.

I am successfully interacting with a 3D graph created with LightGraphs, but plotly backend is rather slow when I have 2000 nodes and 10,000 edges. It might be slow because the curvature argument creates intermediate points on an edge modeled by a spline. However, there is no acceleration when curvature is zero, and yet, a straight line is sufficient. That is not reasonable. Also, when curvature is low, an edge could be modeled with a reduced number of intermediate nodes. So I created a graph with a single edge, and ran the following code (notice the x,y,z arguments to graphplot.

using LightGraphs
using GraphRecipes
import Plots
Plots.plotly()

function plotGraph()
    graph = SimpleGraph(20, 1)
    nb_nodes = nv(graph)
    xx = rand(nb_nodes)
    yy = rand(nb_nodes)
    zz = rand(nb_nodes)
    p = graphplot(graph, dim=3, curvature=0, x=xx, y=yy, z=zz)
end

p = plotGraph()

The graph has edges associated with it. How is that possible? It is as if the position matrices are being used to create edges.

I looked at the source code to graphplot and it is very complex because of the level of generality. It seems to me that the code could be refactored to be more efficient. For example, if not graph restructuring is needed and edges are straight, processing can be decreased substantially. I like the generality when it is needed, but really do not understand why a graph of 2000 nodes with 10000 edges needs a minute to display (if I am luck), in 3D when curvature =0. I would expect a factor 100 speedup. The timing has nothing to do with first-time execution of my function. It is the same for the 2nd and 3rd execution. Thank you.

Any ideas?

Linguagem predominante
Julia
Estrelas
213
Forks
62
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de JuliaGraphs/GraphPlot.jl

Todas as issues de JuliaGraphs/GraphPlot.jl

Issues semelhantes

Mais issues de Julia

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.