(Link to an example.)
(Mentioned 3D backends.)
Revision as of 02:57, 17 February 2013
It would be cool to get a Google Summer of Code student involved with diagrams somehow. Let's brainstorm some project ideas below!
1 Project ideas
1.1 GTK application for creating diagrams interactively
1.2 Path operations
Intersection, union, etc?
See also Diagrams/Dev/Paths.
1.3 Optimized Diagrams
Tools for backends to remove redundant data?
1.4 Constraint Based Diagrams
Generate diagrams that meet some declarative constraint specification. Something along the lines of http://wadler.blogspot.com/2011/06/combinator-library-for-design-of.html
1.5 3D Backends
Lots of fun things to do here!
1.6 Make Plotting As Easy As Doing It in R
The above code produces four plots: a scatterplot (something you would often see in statistics), a plot of a function and, well, two empty grids. As a statistician, I usually work a lot with R together with a more or less sophisticated plotting package. The currently best plotting system for R is probably ggplot . Now, I started using Bryan O'Sullivan's statistics package for some of my calculations. Once in Haskell mode, you obviously don't want to switch back and forth between languages. So, I was wondering if it is possible to produce professional looking plots with diagrams' DSL, and how difficult it could be to put together a DSL for (statistical) plotting.
I was thinking of something similar to ggplot's functionality. Making it easy to overlay plots, producing and combining legends, etc. Creating scatterplots and histograms and boxplots. Overlaying them with error regions and density estimates respectively. Then do the same for different subsets of the original data. Doing this with diagrams DSL could proof to be extremely powerful. Each "dot" in a plot could potentially be any diagram you want, dots, circles, stars, numbers or characters -- and if plots are nothing but diagrams, you could even plot plots into a plot. A real pain for most plotting systems is to combine multiple plots into one and to generate a common legend for all of them. This, for example, should be trivial to do within diagrams DSL.
I would be more than happy to help in such a project. As the code above probably suggests, I am not the strongest Haskell hacker around. In fact, I am a statistician/mathematician who happens to use Haskell for some of his projects. That's it. Would anyone be interested in picking up such a project? As I said, I would be happy to help and get involved. Because I think there is a real need for something like this, and it would be very powerful to have eDSL for statistical plotting within Haskell.