dim=3 plotting non-edges

Ouverte
#116 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
julia, plotly

Piste de recherche

Commencez au point d’entrée graphplot et reproduisez l’exemple Julia fourni avec dim=3, curvature=0 et des positions x, y et z explicites. Vérifiez pourquoi un graphe avec une arête semble contenir des arêtes supplémentaires et comparez le chemin à arêtes droites avec le chemin courbe, plus lent ; c’est terminé lorsque les arêtes tracées correspondent au graphe et que les tracés 3D à courbure nulle sont sensiblement plus rapides.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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?

Langage dominant
Julia
Étoiles
213
Forks
62
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaGraphs/GraphPlot.jl

Toutes les issues de JuliaGraphs/GraphPlot.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.