shahinrostami / plotapi

Engaging visualisations, made easy.
https://plotapi.com
MIT License
267 stars 17 forks source link

Possible to Label Relationships #5

Closed jamfwright closed 4 years ago

jamfwright commented 4 years ago

First off - fantastic work, bought the book. Really great stuff.

I'm not seeing a way to label the relationships. Does that feature exist? Will it exist?

For example, if I want to visualize network activity, I imagine the outer ring labels to be the network entities (such as computers) and the relationship would be labeled with the port used.

As an added "nicety" having the label show only when hovering on over the relationship so that the view isn't cluttered.

This would expand the ability to apply Chord to other types of data visualization.

shahinrostami commented 4 years ago

I'm glad you like it!

That functionality doesn't exist, but it could.

Can you give me an example of how you would structure the data? Perhaps I could build something around it!

jamfwright commented 4 years ago

Thanks! I have a lot of thoughts of what I'd like to be able to do, I'll try to be concise :)

The short answer is that I want to leverage 3 or more fields and see different ways of doing so.

The full list of fields to leverage would be:

  1. Source (a string - an IP address or host name)
  2. Port (could be an integer or string - maybe this should be 3, or a specifier for TCP, UDP, ICMP)
  3. Destination (a string - an IP address or host name)
  4. Direction of connection being displayed (maybe arrow indicators in the relationship flow or alternatively present each host/IP twice, one as a source, one as a destination)
  5. Thickness of relationship (an integer - designated by data transferred or number of connections)

I'm aware that this is likely asking for a lot. Here's some context around what I'm asking in case it is of interest:

I work in the information/cyber security field. When assessing technical data there is a serious lack of capabilities that meet the actual need. The need can be reduced to two primary requirements:

  1. Appropriate visualization of the data
  2. Ability to interact with the visualization in a meaningful way

It is not uncommon for folks in my field to need to review either network activity (through a packet capture, netflow, etc) and/or review firewall and access control policies.

For network activity one needs to see the big picture, but be able to highlight individual connections - a visualization here is great as you no longer have to dig into a ridiculous amount of technical data (logs, packet captures, etc) and needing to "figure it all out" for each incident. It's very time consuming and exhausting :)

The second - firewall and access control policies - is actual very similar. The difference is that we need to figure out what can touch/talk to each other rather than what did touch/talk to each other. Again, it's tedious. The ability to see the big picture and quickly (visually) discern the anomalous access/activity is sorely missed.

I've played with Neo4j as I do like the interactive portion. To be able to "move" the nodes in the relationship network is great - but I'm running into similar issues as I am with Chord. The basic relationship mapping works, but there just isn't enough relevant data appearing in the output to be truly useful. NetworkX was my next stop (less interactive without extra effort and additional packages) but then I saw Chord in some Reddit posts which compelled me to take a look. It could work with some additional features.

Best, James

shahinrostami commented 4 years ago

Replying with the mobile app so please excuse any typographical issues

Very cool ideas! As you’ve suggested, this is quite an extension of the current functionality. I plan to look at enabling the inclusion of more data as Chord matured as a package, and these ideas certainly take it beyond the d3-chord implementation.

I’ll try to figure out how to manage these types of feature request moving forward! One thing I’ve done in the meantime is to apply for the GitHub sponsors programme, which will let me work on this more if it works out!

jamfwright commented 4 years ago

Cool! Best of luck with that :)

Thanks for taking the time to think about my ideas.

shahinrostami commented 4 years ago

Thank you :) the GitHub sponsors and Patreon programme are now up!