JohnCoene / echarts4r

🐳 ECharts 5 for R
http://echarts4r.john-coene.com/
Other
585 stars 82 forks source link

feat: allow setting node XY coordinates when layout="none" #599

Closed teofiln closed 7 months ago

teofiln commented 7 months ago

Hi! I was trying to create a graph similar to this: https://echarts.apache.org/examples/en/editor.html?c=graph-simple, where the user passes X and Y coordinates for the nodes. But, it seems that e_graph() does not have this feature. Looks like it does not render anything when layout = "none". After some poking around, it seemed like there was no way to pass X and Y coordinates, so I tried to implement it by updating the e_graph_nodes functions and the associated . helpers from utils.R.

With this update, a user can now set fixed node positions with a call like:

nn <- data.frame(
    name = c("A", "B", "C", "D", "E"),
    value = c("A", "B", "C", "D", "E"),
    group = c("gr1", "gr1", "gr2", "gr2", "gr3"),
    size = 3:7 * 10,
    x = c(0, 200, 400, 600, 800),
    y = c(100, 100, 200, 200, 0)
)

ee <- data.frame(
    source = c("A", "B", "C", "D", "E"),
    target = c("B", "C", "D", "E", "D")
)

devtools::load_all()
e_charts() |>
    e_graph(layout = "none", autoCurveness = TRUE) |>
    e_graph_nodes(nn, name, value, size, category = group, xpos = x, ypos = y) |>
    e_graph_edges(ee, source, target) |>
    e_tooltip()

image

JohnCoene commented 7 months ago

Thanks, LGTM. Could you add yourself as ctb in the DESCRIPTION?

teofiln commented 7 months ago

@JohnCoene I added my self as ctb. Thanks!

JohnCoene commented 7 months ago

Thanks!