This is a tutorial I presented at ICFP last year on visualization and graphics in Haskell. It talks at length about why functional programming is a good idea for graphics, and then presents the basic tools that exist today.
I’m continuing that work right now with an interest in developing declarative systems that provide a graphics as a transformational layer from pure data. Non basic tools that don’t yet exist today. In other words, you don’t draw graphics based on data — the graphics are a function on the data and user interactions on the data. Hopefully, this will lead to better, easier ways of building visualizations and will also lead to code that is directly understandable and predictable in terms of the data.