Skip to content

Feature request: layouts for weighted graphs #63

@vandenman

Description

@vandenman

If one has a weighted graph, would it make sense for the layout algorithm to account for the weights?

This is done in, for instance, the R package qgraph.

Perhaps I'm viewing this too simplistically, but I think that all that needs to be done is multiply by the weights at some point. For example, in the Spring layout, there is now

if adj_matrix[i, j] != zero(eltype(adj_matrix)) || adj_matrix[j, i] != zero(eltype(adj_matrix))
# F = d^2 / K - K^2 / d
F_d = d / K - K^2 / d^2
else
# Just repulsive
# F = -K^2 / d^
F_d = -K^2 / d^2
end

where, if I understand the code correctly, this line F_d = d / K - K^2 / d^2 could be changed to account for the weight of the edge. One option is to simply weigh the attraction by the (normalized) edge strength, which is I think what qgraph does (see https://github.com/cran/qgraph/blob/57d588ee05a554f9d1078914e05ce03662c610b2/src/layout_rcpp.cpp#L111).

Any thoughts? I'd be happy to open a draft PR for a single layout (e.g., spring).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions