This function computes and assigns node positions and centroids for an ENA set object using the current points and rotation information.
Arguments
- x
An
ena.setobject for which to optimize node and centroid positions.- weights
Optional. A numeric matrix of connection weights. If provided, the function will use this matrix instead of the connection counts from the
ena.set.- self_weight
Weight of a self-connection (a column connecting a code to itself: the ordered diagonal, or an unordered set's A & A columns from accumulate(self_connections = TRUE)) in its code's node weight. 2 (default) counts it in both the node's row and column sums, the in + out rule of Zhiqiang Cai's 2021 fix; 1 counts it once. Recorded as
x$rotation$self.weight.- exclude_zero_networks
A logical value. If `TRUE` (default), units whose line weights are all zero are left out of the fit, their centroids are zero, and for unordered sets the nodes and centroids are shifted so the mean centroid of the fitted units is at the origin, as `ena.make.set(center.align.to.origin = TRUE)` does. Ordered sets are fit on the other units without that shift, as ONA does. With no empty units the result is unchanged.
Examples
# Assuming 'set' is an ena.set object:
data(RS.data)
codes <- c("Data", "Technical.Constraints", "Performance.Parameters",
"Client.and.Consultant.Requests", "Design.Reasoning",
"Collaboration")
units <- c("Condition", "UserName")
horizon <- c("Condition", "GroupName")
enaset <- RS.data |>
accumulate(units, codes, horizon) |>
sphere_norm() |>
center() |>
rotate() |>
project() |>
optimize()
