JuliaPlots / VennEuler.jl

Venn/Euler Diagrams for Julia
Other
11 stars 6 forks source link

Simpler API #14

Open binarybana opened 10 years ago

binarybana commented 10 years ago

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 commented 10 years ago

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.