SlideShare a Scribd company logo
Understanding
Connected Data through
Visualization
ConnectedData London | October 4th, 2019
Sebastian Mueller
– CTO yWorks –
/yworks/in/yguy/@yworks , @ySebp contact@yworks.com
Agenda
• Visualization – what types of tools are there?
• How can we do better?
• Use-case specific automatic layout
• Transforming graphs on the fly
• Detailed node visualization
• Customized user interactions
• Integration with third party systems
• Q&A
Who is this talk for?
• People working with connected data
• Data-scientists and engineers
• Project managers
• Software developers
Tools for Visualizing Connected Data
• Low-level database/data-source viewers
• Pros:
• Raw data access
• Readily available
• Cons:
• Hard to interpret and navigate the data
• Can be dangerous to use
• May not be accessible to users
Tools for Visualizing Connected Data
• Generic visualization applications
• Pros:
• Easy to get started
• Little low-level knowledge required
• Some analytics included
• Cons:
• Does not work with all schemas
• Costly for many users
• Scientific tools
• Pros:
• Good flexibility
• Many analytics
• Cons:
• Often focusing on scalar, rather then
connected data
• Hard to use for end-users
• Difficult or costly to deploy as
solution
Tools for Visualizing Connected Data
• Visualization Software Libraries
• Pros:
• Best possible end-user experience
• Most flexible
• data acquisition
• transformation
• display
• interaction
• integration
• Cons:
• Initial software development work required
Tools for Visualizing Connected Data
software libraries for the visualization of
graphs, diagrams, and networks
• Most complete set of automatic layout algorithms
• Available for all major software platforms
• Graph analytics and algorithms included
• Viewing, editing, and creating diagrams
• Generic visualization engine for all diagramming needs
• Extreme customizability and extensibility
Importing the data
• Any source and
format is
possible:
• JSON, XML, text,
binary,
database-
connectors, etc.
await graphMLIOHandler.readFromURL(graph,
'./marvel-graph-raw.graphml')
const graph = new GraphBuilder({
nodesSource: jsonData.nodes,
edgesSource: jsonData.edges,
nodeIdBinding: 'id',
sourceNodeBinding: 'from',
targetNodeBinding: 'to',
}).buildGraph()
const node1 = graph.createNode({tag: data1})
const node2 = graph.createNode({tag: data2})
graph.createEdge(node1, node2)
Getting an initial layout
await graphComponent.morphLayout(
new OrganicLayout({
minimumNodeDistance: 20,
preferredEdgeLength: 100,
compactnessFactor: 0.3
}),
'2s'
)
• Organic (force directed)
• Hierarchic
• Orthogonal
• Tree
• Circular
• Balloon
• Radial
• …
Adding text labels
graph.nodes.forEach(n =>
graph.addLabel(n, n.tag.name))
await graphComponent.morphLayout(
new OrganicLayout({
considerNodeLabels: true
}),
'2s'
)
• Any number of labels
• Any color, font, size
• icons
• On nodes, edges, ports,
background…
Styling different node types
const heroStyle = new ShapeNodeStyle({
shape: 'octagon‘,
fill: 'lightblue‘,
stroke: null })
graph.nodes.filter(n => n.tag.type === 'hero‘)
.forEach(n => graph.setStyle(n, heroStyle))
• Different shapes
• colors
• fills
• opacities
• strokes
• icons
• badges
• …
Graph analysis
addHeatMap(graphComponent,
item =>
(item instanceof INode ?
1 - Math.pow(0.9, graph.degree(item)) : 0)
)
• Centralities
• Clustering
• Paths
• Flows
• Reachability
• Root-cause analysis
• Cycle detection
• …
Nesting and Grouping
• Arbitrary nesting depths
• drill-down
• Expand/collapse
• Any visualization
graph.groupNodes(movies).tag = { type: 'group' }
graph.groupNodes(heroes).tag = { type: 'group' }
await graphComponent.morphLayout(
new OrganicLayout({
groupNodeCompactness: 0.9,
}),
'2s'
)
Metaball Blob Groups
• Multiple parents
• Overlaps allowed
await graphComponent.morphLayout(
new OrganicLayout(),
'2s',
new OrganicLayoutData({
partitionGridData: new PartitionGridData({
rowIndices: node => (node.tag.type === 'hero'?0:1)
})
})
)
graphComponent.backgroundGroup.addChild(
new BlobBackground(
graph.nodes.filter(n => n.tag.type === 'movie'),
new Color(255, 255, 128, 196),
)
)
await graphComponent.morphLayout(
new HierarchicLayout(),
'2s',
new HierarchicLayoutData({
givenLayersLayererIds: n => (n.tag.type === 'hero' ?0:1)
})
)
Bi-partite Layout
Hierarchic Layout:
• Any number of layers
• Automatic layer assignment
• Highlights flow
• Reduces crossings
• Optional fixed layering
More layout constraints
• (Partial) orders for layers
• Nested Graphs
• Optional fixed layering
• Integrated labeling
• Edge connections and
directions
• Incremental, partial, from
sketch…
await graphComponent.morphLayout(
new HierarchicLayout(),
'2s',
new HierarchicLayoutData({
sequenceConstraints: {
itemComparables: n => (!n.tag || !n.tag.year ? null : n.tag.year)
},
})
)
Transforming the graph
1. Augment movie data
2. Sort movie nodes according to data
3. For each hero participating in two
movies, create edge between pairs of
sorted movies
4. Render as flow-graph from left to
right
movies.forEach(n => {
n.tag.year = movie2year[n.tag.name]
})
heroes.forEach(heroNode => {
graph
.outEdgesAt(heroNode)
.map(e => e.targetNode)
.orderBy(node => node.tag.year)
.reduce((a, b) => {
graph.createEdge({
source: a,
target: b,
tag: { hero: heroNode.tag },
labels: [heroNode.tag.name]
})
return b
})
})
Transformed graph result
await graphComponent.morphLayout(
new HierarchicLayout({
considerNodeLabels: true,
integratedEdgeLabeling: true,
layoutOrientation: 'left-to-right',
}),
'2s',
new HierarchicLayoutData({
edgeLabelPreferredPlacement:
new PreferredPlacementDescriptor({
placeAlongEdge: 'at-center',
sideOfEdge: 'on-edge'
})
})
)
• Far fewer edge crossings
• Flow is easy to follow
• More information visible
… with time constraints
This visualization reveals:
• Parallel time-lines
• The flow of characters
between franchises
• The “big picture” of the story
await graphComponent.morphLayout(
new HierarchicLayout(),
'2s',
new HierarchicLayoutData({
layerConstraints: { nodeComparables: n => n.tag.year }
})
)
• Scalar values
• Color coding
• Gauges
• Extra texts
• Animations
• Icons, Badges
• …
Sample Custom Visualizations I
• Complex Data-
Binding
• Level of Detail
• Interactive
elements
Sample Custom Visualizations II
• Custom labels,
ports, edges,
nodes, groups
• Animated layouts
Sample Custom Visualizations III
• Background
graphics
• Isometric views
• Overlays
• Hover effects
• Highlighting
• Selection
Sample Custom Visualizations IV
• (Custom) search
• Context menus
• Keyboard, multi-
touch, pen input
• Editing
• Clipboard
• Input validation
Sample Custom Interactions I
• Birds-eye view
• Filtering
• Utility views
• Interactive analysis
algorithms
• Printing
• Custom export
Sample Custom Interactions II
Integrating 3rd Party Systems
• Connect to any available service
• Push/pull live-updates
• Access all kinds of data storages
• Automate processes
• Added an interactive legend
• Aligned incoming and outgoing edges
• Colored connectors
• Added icons to connectors
• Using screen-time data for line-thicknesses
• Added background showing the time-line
• Added interactive filtering and highlighting options
The Marvel Universe: What we
made of it …
Online for everyone to play with at
yworks.com/marvel
Other demos:
yworks.com/demos
Any Questions?
/yworks/in/yguy/@yworks , @ySebp contact@yworks.com
www.yworks.com
yfiles.com
yWorks GmbH, Vor dem Kreuzberg 28, 72070 Tuebingen, Germany
Thank you and
happy diagramming
with !

More Related Content

PDF
3DRepo
PDF
D3 meetup (Backbone and D3)
PPTX
Dex Technical Seminar (April 2011)
PDF
MongoDB MapReduce Business Intelligence
PPTX
MongoDB GeoSpatial Feature
PPTX
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
PDF
Neo4j Graph Data Science Training - June 9 & 10 - Slides #3
PPTX
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
3DRepo
D3 meetup (Backbone and D3)
Dex Technical Seminar (April 2011)
MongoDB MapReduce Business Intelligence
MongoDB GeoSpatial Feature
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
Neo4j Graph Data Science Training - June 9 & 10 - Slides #3
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...

What's hot (19)

PPTX
Indexing Strategies to Help You Scale
PPT
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
KEY
Schema Design (Mongo Austin)
PDF
MongoDB.local DC 2018: Tutorial - Data Analytics with MongoDB
PDF
Taller: Datos en tiempo real con GraphQL
PDF
MongoDB Schema Design
PPTX
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
PDF
D3.js 30-minute intro
PPTX
MongoDB Aggregations Indexing and Profiling
PDF
Sceneform SDK на практиці - UA Mobile 2019
PDF
Charting with Google
PDF
A Quick and Dirty D3.js Tutorial
PPTX
PCA11: Python for Product Managers
PDF
Visual Exploration of Large Data sets with D3, crossfilter and dc.js
PDF
Combine Spring Data Neo4j and Spring Boot to quickl
PDF
D3 data visualization
PPTX
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Indexing Strategies to Help You Scale
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
Schema Design (Mongo Austin)
MongoDB.local DC 2018: Tutorial - Data Analytics with MongoDB
Taller: Datos en tiempo real con GraphQL
MongoDB Schema Design
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.js 30-minute intro
MongoDB Aggregations Indexing and Profiling
Sceneform SDK на практиці - UA Mobile 2019
Charting with Google
A Quick and Dirty D3.js Tutorial
PCA11: Python for Product Managers
Visual Exploration of Large Data sets with D3, crossfilter and dc.js
Combine Spring Data Neo4j and Spring Boot to quickl
D3 data visualization
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Ad

Similar to Understanding Connected Data through Visualization (20)

PDF
DEX: Seminar Tutorial
PPTX
Getting Started with Geospatial Data in MongoDB
PDF
Js info vis_toolkit
PPTX
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
PDF
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
PPTX
Benefits of Using MongoDB Over RDBMSs
PPTX
Code is not text! How graph technologies can help us to understand our code b...
PDF
Graph computation
PPTX
COLLADA & WebGL
PDF
Opensource gis development - part 3
PDF
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
PDF
UMLtoGraphDB: Mapping Conceptual Schemas to Graph Databases
PDF
Your Database Cannot Do this (well)
PDF
MongoDB and Web Scrapping with the Gyes Platform
PPTX
Transitioning from SQL to MongoDB
PDF
Scalding big ADta
PDF
High-Performance Graph Analysis and Modeling
PDF
Social Data and Log Analysis Using MongoDB
KEY
Mongodb intro
PPTX
Graph Databases in the Microsoft Ecosystem
DEX: Seminar Tutorial
Getting Started with Geospatial Data in MongoDB
Js info vis_toolkit
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
Benefits of Using MongoDB Over RDBMSs
Code is not text! How graph technologies can help us to understand our code b...
Graph computation
COLLADA & WebGL
Opensource gis development - part 3
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
UMLtoGraphDB: Mapping Conceptual Schemas to Graph Databases
Your Database Cannot Do this (well)
MongoDB and Web Scrapping with the Gyes Platform
Transitioning from SQL to MongoDB
Scalding big ADta
High-Performance Graph Analysis and Modeling
Social Data and Log Analysis Using MongoDB
Mongodb intro
Graph Databases in the Microsoft Ecosystem
Ad

Recently uploaded (20)

PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Understanding Forklifts - TECH EHS Solution
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
System and Network Administraation Chapter 3
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
top salesforce developer skills in 2025.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Understanding Forklifts - TECH EHS Solution
PTS Company Brochure 2025 (1).pdf.......
CHAPTER 2 - PM Management and IT Context
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Softaken Excel to vCard Converter Software.pdf
System and Network Administraation Chapter 3
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Odoo POS Development Services by CandidRoot Solutions
top salesforce developer skills in 2025.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
2025 Textile ERP Trends: SAP, Odoo & Oracle
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Wondershare Filmora 15 Crack With Activation Key [2025
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Understanding Connected Data through Visualization

  • 2. Sebastian Mueller – CTO yWorks – /yworks/in/yguy/@yworks , @ySebp contact@yworks.com
  • 3. Agenda • Visualization – what types of tools are there? • How can we do better? • Use-case specific automatic layout • Transforming graphs on the fly • Detailed node visualization • Customized user interactions • Integration with third party systems • Q&A
  • 4. Who is this talk for? • People working with connected data • Data-scientists and engineers • Project managers • Software developers
  • 5. Tools for Visualizing Connected Data • Low-level database/data-source viewers • Pros: • Raw data access • Readily available • Cons: • Hard to interpret and navigate the data • Can be dangerous to use • May not be accessible to users
  • 6. Tools for Visualizing Connected Data • Generic visualization applications • Pros: • Easy to get started • Little low-level knowledge required • Some analytics included • Cons: • Does not work with all schemas • Costly for many users
  • 7. • Scientific tools • Pros: • Good flexibility • Many analytics • Cons: • Often focusing on scalar, rather then connected data • Hard to use for end-users • Difficult or costly to deploy as solution Tools for Visualizing Connected Data
  • 8. • Visualization Software Libraries • Pros: • Best possible end-user experience • Most flexible • data acquisition • transformation • display • interaction • integration • Cons: • Initial software development work required Tools for Visualizing Connected Data
  • 9. software libraries for the visualization of graphs, diagrams, and networks • Most complete set of automatic layout algorithms • Available for all major software platforms • Graph analytics and algorithms included • Viewing, editing, and creating diagrams • Generic visualization engine for all diagramming needs • Extreme customizability and extensibility
  • 10. Importing the data • Any source and format is possible: • JSON, XML, text, binary, database- connectors, etc. await graphMLIOHandler.readFromURL(graph, './marvel-graph-raw.graphml') const graph = new GraphBuilder({ nodesSource: jsonData.nodes, edgesSource: jsonData.edges, nodeIdBinding: 'id', sourceNodeBinding: 'from', targetNodeBinding: 'to', }).buildGraph() const node1 = graph.createNode({tag: data1}) const node2 = graph.createNode({tag: data2}) graph.createEdge(node1, node2)
  • 11. Getting an initial layout await graphComponent.morphLayout( new OrganicLayout({ minimumNodeDistance: 20, preferredEdgeLength: 100, compactnessFactor: 0.3 }), '2s' ) • Organic (force directed) • Hierarchic • Orthogonal • Tree • Circular • Balloon • Radial • …
  • 12. Adding text labels graph.nodes.forEach(n => graph.addLabel(n, n.tag.name)) await graphComponent.morphLayout( new OrganicLayout({ considerNodeLabels: true }), '2s' ) • Any number of labels • Any color, font, size • icons • On nodes, edges, ports, background…
  • 13. Styling different node types const heroStyle = new ShapeNodeStyle({ shape: 'octagon‘, fill: 'lightblue‘, stroke: null }) graph.nodes.filter(n => n.tag.type === 'hero‘) .forEach(n => graph.setStyle(n, heroStyle)) • Different shapes • colors • fills • opacities • strokes • icons • badges • …
  • 14. Graph analysis addHeatMap(graphComponent, item => (item instanceof INode ? 1 - Math.pow(0.9, graph.degree(item)) : 0) ) • Centralities • Clustering • Paths • Flows • Reachability • Root-cause analysis • Cycle detection • …
  • 15. Nesting and Grouping • Arbitrary nesting depths • drill-down • Expand/collapse • Any visualization graph.groupNodes(movies).tag = { type: 'group' } graph.groupNodes(heroes).tag = { type: 'group' } await graphComponent.morphLayout( new OrganicLayout({ groupNodeCompactness: 0.9, }), '2s' )
  • 16. Metaball Blob Groups • Multiple parents • Overlaps allowed await graphComponent.morphLayout( new OrganicLayout(), '2s', new OrganicLayoutData({ partitionGridData: new PartitionGridData({ rowIndices: node => (node.tag.type === 'hero'?0:1) }) }) ) graphComponent.backgroundGroup.addChild( new BlobBackground( graph.nodes.filter(n => n.tag.type === 'movie'), new Color(255, 255, 128, 196), ) )
  • 17. await graphComponent.morphLayout( new HierarchicLayout(), '2s', new HierarchicLayoutData({ givenLayersLayererIds: n => (n.tag.type === 'hero' ?0:1) }) ) Bi-partite Layout Hierarchic Layout: • Any number of layers • Automatic layer assignment • Highlights flow • Reduces crossings • Optional fixed layering
  • 18. More layout constraints • (Partial) orders for layers • Nested Graphs • Optional fixed layering • Integrated labeling • Edge connections and directions • Incremental, partial, from sketch… await graphComponent.morphLayout( new HierarchicLayout(), '2s', new HierarchicLayoutData({ sequenceConstraints: { itemComparables: n => (!n.tag || !n.tag.year ? null : n.tag.year) }, }) )
  • 19. Transforming the graph 1. Augment movie data 2. Sort movie nodes according to data 3. For each hero participating in two movies, create edge between pairs of sorted movies 4. Render as flow-graph from left to right movies.forEach(n => { n.tag.year = movie2year[n.tag.name] }) heroes.forEach(heroNode => { graph .outEdgesAt(heroNode) .map(e => e.targetNode) .orderBy(node => node.tag.year) .reduce((a, b) => { graph.createEdge({ source: a, target: b, tag: { hero: heroNode.tag }, labels: [heroNode.tag.name] }) return b }) })
  • 20. Transformed graph result await graphComponent.morphLayout( new HierarchicLayout({ considerNodeLabels: true, integratedEdgeLabeling: true, layoutOrientation: 'left-to-right', }), '2s', new HierarchicLayoutData({ edgeLabelPreferredPlacement: new PreferredPlacementDescriptor({ placeAlongEdge: 'at-center', sideOfEdge: 'on-edge' }) }) ) • Far fewer edge crossings • Flow is easy to follow • More information visible
  • 21. … with time constraints This visualization reveals: • Parallel time-lines • The flow of characters between franchises • The “big picture” of the story await graphComponent.morphLayout( new HierarchicLayout(), '2s', new HierarchicLayoutData({ layerConstraints: { nodeComparables: n => n.tag.year } }) )
  • 22. • Scalar values • Color coding • Gauges • Extra texts • Animations • Icons, Badges • … Sample Custom Visualizations I
  • 23. • Complex Data- Binding • Level of Detail • Interactive elements Sample Custom Visualizations II
  • 24. • Custom labels, ports, edges, nodes, groups • Animated layouts Sample Custom Visualizations III
  • 25. • Background graphics • Isometric views • Overlays • Hover effects • Highlighting • Selection Sample Custom Visualizations IV
  • 26. • (Custom) search • Context menus • Keyboard, multi- touch, pen input • Editing • Clipboard • Input validation Sample Custom Interactions I
  • 27. • Birds-eye view • Filtering • Utility views • Interactive analysis algorithms • Printing • Custom export Sample Custom Interactions II
  • 28. Integrating 3rd Party Systems • Connect to any available service • Push/pull live-updates • Access all kinds of data storages • Automate processes
  • 29. • Added an interactive legend • Aligned incoming and outgoing edges • Colored connectors • Added icons to connectors • Using screen-time data for line-thicknesses • Added background showing the time-line • Added interactive filtering and highlighting options The Marvel Universe: What we made of it …
  • 30. Online for everyone to play with at yworks.com/marvel Other demos: yworks.com/demos
  • 31. Any Questions? /yworks/in/yguy/@yworks , @ySebp contact@yworks.com www.yworks.com
  • 32. yfiles.com yWorks GmbH, Vor dem Kreuzberg 28, 72070 Tuebingen, Germany Thank you and happy diagramming with !