Comments (6)
It's not a feature that is available as of today. However, it's not too hard to add this functionality outside of Network
. Here is my take on it:
// Pre: data.nodes and data.edges initialized as vis.DataSet instances
/**
* Extract given field from items array and return unique values in an array
*/
function fieldFromItems(items, field) {
var tmpHash = {};
for (var n in items) {
tmpHash[items[n][field]] = true;
}
return Object.keys(tmpHash);
}
function collectGroups() {
var items = data.nodes.get({
fields: ['group']
});
return fieldFromItems(items, 'group');
}
// Determine all distinct group id's
var groups = collectGroups();
// Cluster per group
for (var n in groups) {
var group = groups[n];
network.cluster({
joinCondition: function(item) {
return item.group == group;
},
clusterNodeProperties: {
label: 'Group ' + group
}
});
}
HTH
from vis.
Hi Jimmy,
Currently this is not possible. This concept has been on our internal
list but I cannot give any estimates on if or when this will be
included. First and foremost vis is a visualization library. Feature
based clustering could be very useful but it is also more on the side
of data analysis. Our main concern is that we will have to (partly)
disregard the connections and create a feature vector with properties
for the nodes. This feature vector will be clustered through some kind
of kmeans algorithm. Once this is done, the presentation of such
clusters might be very illogical since you're collapsing a high
dimensional space (feature vector) to a 2d space where only X and Y
matter.
We would very much appreciate to hear about your use case. Maybe you
have a way or idea of using feature based clustering that would
sidestep these problems.
Regards,
Alex
from vis.
Hi Alex,
Thanks for the explanation.
I don't have any idea how to solve the problems you mentioned.
I just wanted to see how the graph would look if I cluster nodes based on features.
My use case is simple. Using the clustering example from vis.js, instead of clustering connected nodes while zooming out, I would like to cluster nodes with similar attributes.
from vis.
Hi Jimmy,
Currently, we favor the method that respects the structure of the network. I cannot promise we'll expand upon this further but who knows? :)
Thank you for using vis!
from vis.
Is this feature available as of today?
from vis.
I too am wondering if this feature is available as of today.
from vis.
Related Issues (20)
- Overlapping Edges in Vis.js 4.20.0 and later HOT 1
- Timeline - how to dynamically change options value? HOT 3
- timeline - update tooltip on onMoving callback is not working HOT 2
- Cross-Site Scripting DOM Input Validation and Representation HOT 1
- how to change X-Axis data format in Vis.js
- Suggestion for showcase - museum-digital
- Select option list is not clickable in groups section
- Flicking a timeline element off of screen unable to drag other element
- Is it possible to have a single line be drawn with multiple colors based on the data?
- Timeline bug with safari βmoveToβ HOT 1
- Github Pages site for visjs.org down HOT 3
- Update items or remove
- Shorthand option for edge color being ignored
- Every time you update the "network" shape always changes, how can you make the shape unchanged? HOT 2
- Connector title disappears when (re-)opening a cluster HOT 2
- Looking for a plugin to draw such this graph online HOT 1
- Edge label at 0,0 HOT 1
- can we have items on either side of timeline(up and down)
- Showcase suggestion: libcolgraph
- Mark Original Start in Timeline Bar
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vis.