This module is for generating web-based charts using Google's Chart API: http://code.google.com/apis/chart/. Its output is URLs that will resolve to a PNG image of the resulting chart.
Most of the functions in this module, with names like setFoo
, take a Chart
as an argument and produce a new Chart
with the specified attribute added.
These calls are designed to be chained together. See the example below.
Chart
s are represented as a hierarchy of type classes so that parameters
that only affect a specific chart type are only available to that chart type.
putStrLn "URL for your chart:" putStrLn $chartURL
$setSize
400 257 $setTitle
"My Chart" $setData
(encodeDataSimple
[[1..20]]) $setLegend
["1 to 20"] $newLineChart
This produces: http://chart.apis.google.com/chart?chs=400x257&chtt=My+Chart&chd=s%3aBCDEFGHIJKLMNOPQRSTU&chdl=1+to+20&cht=lc
- class Chart c
- chartURL :: Chart c => c -> String
- setSize :: Chart c => Int -> Int -> c -> c
- setTitle :: Chart c => String -> c -> c
- setTitleOpts :: Chart c => String -> Int -> c -> c
- setData :: Chart c => ChartData -> c -> c
- data ChartData
- encodeDataSimple :: [[Int]] -> ChartData
- encodeDataText :: [[Int]] -> ChartData
- encodeDataExtended :: [[Int]] -> ChartData
- class Chart c => LegendChart c where
- data LineChart
- newLineChart :: LineChart
- data PieChart
- newPieChart :: PieStyle -> PieChart
- data PieStyle
- setLabels :: [String] -> PieChart -> PieChart
- data BarChart
- newBarChart :: Orientation -> BarStyle -> BarChart
- data Orientation
- = Horizontal
- | Vertical
- data BarStyle
Chart basics
These functions and types are shared by all chart types.
The type class underneath all Charts.
setSize :: Chart c => Int -> Int -> c -> cSource
Set the width and height, in pixels, of the resulting image.
Set options for the display of the title of the chart.
Chart data
There are multiple options for encoding chart data. See http://code.google.com/apis/chart/#chart_data for more details.
encodeDataSimple :: [[Int]] -> ChartDataSource
Encode data using the "simple" encoding. This produces minimal URLs but
doesn't have as much resolution. Input values must be in the range 0 <= x
<= 61
. Values outside the valid input range will be considered missing
data.
encodeDataText :: [[Int]] -> ChartDataSource
Encode data using the "text" encoding. XXX unimplemented.
encodeDataExtended :: [[Int]] -> ChartDataSource
Encode data using the "extended" encoding. XXX unimplemented.
Chart features
class Chart c => LegendChart c whereSource
LegendChart represents charts that can display legends with setLegend
.
Specific chart types
Line charts
Pie charts
Bar charts
newBarChart :: Orientation -> BarStyle -> BarChartSource