{"action":"created","issue":{"url":"https://api.github.com/repos/almende/vis/issues/1398","labels_url":"https://api.github.com/repos/almende/vis/issues/1398/labels{/name}","comments_url":"https://api.github.com/repos/almende/vis/issues/1398/comments","events_url":"https://api.github.com/repos/almende/vis/issues/1398/events","html_url":"https://github.com/almende/vis/issues/1398","id":113592335,"number":1398,"title":"Dynamic vs. other edges","user":{"login":"sklarman","id":12385097,"avatar_url":"https://avatars.githubusercontent.com/u/12385097?v=3","gravatar_id":"","url":"https://api.github.com/users/sklarman","html_url":"https://github.com/sklarman","followers_url":"https://api.github.com/users/sklarman/followers","following_url":"https://api.github.com/users/sklarman/following{/other_user}","gists_url":"https://api.github.com/users/sklarman/gists{/gist_id}","starred_url":"https://api.github.com/users/sklarman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sklarman/subscriptions","organizations_url":"https://api.github.com/users/sklarman/orgs","repos_url":"https://api.github.com/users/sklarman/repos","events_url":"https://api.github.com/users/sklarman/events{/privacy}","received_events_url":"https://api.github.com/users/sklarman/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/almende/vis/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/almende/vis/labels/Fixed%20awaiting%20release","name":"Fixed awaiting release","color":"006b75"},{"url":"https://api.github.com/repos/almende/vis/labels/Network","name":"Network","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":14,"created_at":"2015-10-27T14:14:14Z","updated_at":"2015-11-02T18:36:13Z","closed_at":null,"body":"Hi,\r\n\r\nFirst of all - thanks for making available this fantastic package!\r\n\r\nI'm developing a simple graph browser, which dynamically adds nodes and edges, and I'm looking for some reasonable compromise between using dynamic and other types of (smooth) edges. \r\n\r\nWith the other types, if I understand correctly, I cannot obtain non-overlapping edges between the same nodes. So for instance with this setup:\r\n\r\n \"edges\": {arrows:'to',\r\n  \"smooth\": {\"type\": 'continuous'}}\r\n\r\nI'm getting overlapping edges, e.g. domain & range edges between bindsTo and BindingFeature: \r\n\r\n<img width=\"350\" alt=\"overlap\" src=\"https://cloud.githubusercontent.com/assets/12385097/10760342/0e36f1ca-7cb4-11e5-8cac-f1726707a086.png\">\r\n\r\n\r\nThe dynamic edges, as in:\r\n\r\n \"edges\": {arrows:'to',\r\n \"smooth\": {\"type\": 'dynamic'}}\r\n\r\nsolve the problem of overlapping, but instead they are quite wild when adding new nodes and edges to the network. At the first moment they are \"pulled\" heavily towards the center of the network dragging the nodes behind them and making the entire process visually very chaotic, as e.g. in here:\r\n\r\n<img width=\"352\" alt=\"dynamicedges\" src=\"https://cloud.githubusercontent.com/assets/12385097/10760411/59b99ac6-7cb4-11e5-981c-5e2cdcf1b2c3.png\">\r\n\r\nWould you be able to suggest some pragmatic strategy of resolving this trade-off? \r\n\r\nAll Best,\r\nSzymon"},"comment":{"url":"https://api.github.com/repos/almende/vis/issues/comments/153118969","html_url":"https://github.com/almende/vis/issues/1398#issuecomment-153118969","issue_url":"https://api.github.com/repos/almende/vis/issues/1398","id":153118969,"user":{"login":"sklarman","id":12385097,"avatar_url":"https://avatars.githubusercontent.com/u/12385097?v=3","gravatar_id":"","url":"https://api.github.com/users/sklarman","html_url":"https://github.com/sklarman","followers_url":"https://api.github.com/users/sklarman/followers","following_url":"https://api.github.com/users/sklarman/following{/other_user}","gists_url":"https://api.github.com/users/sklarman/gists{/gist_id}","starred_url":"https://api.github.com/users/sklarman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sklarman/subscriptions","organizations_url":"https://api.github.com/users/sklarman/orgs","repos_url":"https://api.github.com/users/sklarman/repos","events_url":"https://api.github.com/users/sklarman/events{/privacy}","received_events_url":"https://api.github.com/users/sklarman/received_events","type":"User","site_admin":false},"created_at":"2015-11-02T18:36:13Z","updated_at":"2015-11-02T18:36:13Z","body":"I'd love to contribute to this project, but I'm honestly just making my first baby steps in the programming world, so I'm afraid this could be a little too challenging for the moment :)\r\n\r\nAs for your questions, I believe that a good solution (at least from the perspective of my use case) would fix this mechanism to be on by default and dependent exclusively on the number of edges between two given nodes in the network - this number should be used to determine the (unique and uniformly distributed) values of roundness/curvature for all the edges (thus no randomness). I don't think there should be a need for parametrizing this additionally - the mechanism could just override (or perhaps amplify) the original roundness setting provided by the user. The readability of the edges should come pretty much for free if the curvatures are properly harmonized. \r\n\r\n...or at least that's what I would imagine - for now, it's just my uneducated idea :)\r\n\r\nCheers,\r\nSzymon"}}