Comments (6)
@dominikbraun yeah should be straightforward, can try to get 50 ready asap once #71 has been merged, and I'd be happy to try picking up the AddAttribute()
implementation as well after that if you'd like.
from graph.
Yes, this is a planned feature. The reason why it hasn't been implemented yet is that I wasn't sure about how the API for this should look like. Usually, graph
takes an approach with functional options - in that case, you would create your graph like this:
g := graph.New(graph.StringHash, graph.Attribute("rankdir", "LR"), graph.Attribute("dpi", "200.0"))
This comes with the problem that New
already accepts functional options to pass traits (e.g. Directed()
). Traits are powered by the Traits
type and attributes are backed by the Properties
type, and you can't accept functional options for both types in New
, which is why I planned to unify those types (see #66).
But I'm starting to see the drawbacks of functional options as they pollute the public package API. Therefore, I was thinking about an AddAttribute
method:
g := graph.New(graph.IntHash)
g.AddAttribute("rankdir", "LR")
g.AddAttribute("dpi", "200.0")
This would be my preferred way right now. In any case, we have to reconcile this feature with #50. Would it make sense to you to merge #50 first and implement this feature on top of that, @geoah?
from graph.
Thanks for detailed explanation.
As I understand graph attributes useful only on final graph generation while executing:
draw.DOT(g, file)
Maybe it makes sense to add graph attributes to this function?
from graph.
Thanks for detailed explanation.
As I understand graph attributes useful only on final graph generation while executing:
draw.DOT(g, file)
Maybe it makes sense to add graph attributes to this function?
I also thought about that - it's definitely a possibility and pretty cheap to implement. I originally preferred my approach as a more sustainable and holistic solution, but now that I think about it, it might even make sense to have something like AddAttribute
and and separate attributes for draw.DOT
since there might be attributes that are only relevant when rendering the graph.
Maybe we just implement both... 🤔
from graph.
Support for global graph attributes for draw.DOT
has been added in release v0.17.0:
_ = draw.DOT(g, file, draw.GraphAttribute("label", "my-graph"))
from graph.
Thanks!
from graph.
Related Issues (20)
- Return a slice of all vertices in the graph. HOT 1
- RemoveVertex from graph HOT 2
- go1.20.5 type problem HOT 4
- GitHub Actions CI could be optimized HOT 1
- Shortest Path Doesn't Support Negative Edge Weights Properly HOT 6
- Query edges from/to given vertex HOT 4
- Vertex Attributes And Edge Attributes auto add double quote
- BFSWithDepth not calculating depth correctly HOT 3
- DAG Graph Pagination
- No way to list vertices? HOT 1
- How to split graph into disconnected subgraphs HOT 4
- Expose MemoryStore HOT 1
- can i find the leader/source vertex of a directed acyclic graph ? HOT 5
- multigraph support HOT 4
- Topological sort has a significant performance penalty HOT 1
- Feature Request: Add method for updating Vertex property HOT 1
- Feature: Add method for querying toVertex/fromVertex and steps HOT 1
- can value of vertexAttribute be of type 'any' ?
- guidance on marshaling/unmarshaling
- VertexAttributes func caching last values
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 graph.