Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simpler API #14

Open
binarybana opened this issue Sep 26, 2014 · 1 comment
Open

Simpler API #14

binarybana opened this issue Sep 26, 2014 · 1 comment

Comments

@binarybana
Copy link

After searching for Venn diagram Julia packages in Metadata, I started rolling my own before I thought to search Github globally.

I appreciate the flexibility and optimization-based approach your package provides but in my README I sketched out a simpler API that may serve the needs of most people with 2-4 Sets of items that they want to visualize. This could even hide the optimization behind the scenes with reasonable defaults for those cases simple enough to not need manual tweaking.

@HarlanH
Copy link
Collaborator

HarlanH commented Sep 28, 2014

Hi Jason, yay, a user! I've been meaning to register the package in METADATA, but haven't gotten around to it. Might get to it today.

On the API, yes, definitely. This was hard enough for me to write that I focused on the algorithms and data structures over the user interface. And you're right that it needs some simplicity and polish. (So do the algorithms and data structures!) Using Compose seems interesting too, as an alternative to Cairo. I do think that a two-step define/render sequence is probably advisable, though, at least for Euler diagrams. For Venn diagrams (where you always draw the full overlap, and use labels/shading to show the extent of the overlap), there's nothing to optimize, but I haven't written code to do that yet...

Letsee...

euler1 = optimize(euler(set1, set2, set3, labels=["A", "B", "C"]))
venn1 = venn(set1, set2, set3, labels=["A", "B", "C"])

The euler function could use the default spec -- circles. And optimize can use a random initial state (or better, a force-directed initial state, like Wilkinson uses) by default too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants