dim=3 plotting non-edges

Abierto
#116 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
julia, plotly

Línea de trabajo

Comienza en el punto de entrada de graphplot y reproduce el ejemplo de Julia proporcionado con dim=3, curvature=0 y posiciones explícitas x, y y z. Comprueba por qué un grafo con una arista parece contener aristas adicionales y compara la ruta de aristas rectas con la ruta curva, más lenta; se considera terminado cuando las aristas representadas coinciden con el grafo y los gráficos 3D con curvatura cero son notablemente más rápidos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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?

Lenguaje dominante
Julia
Estrellas
213
Forks
62
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaGraphs/GraphPlot.jl

Todos los issues de JuliaGraphs/GraphPlot.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.