-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Generate web-based charts using the Google Chart API
--
-- Generate web-based charts using the Google Chart API
@package GoogleChart
@version 0.2
-- | 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.
--
-- Charts 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
--
-- Remaining features to implement:
--
--
-- - lxy line charts
-- - chbh bar charts
-- - scatter plots
-- - background/fill colors
-- - all style attributes
--
module Graphics.Google.Chart
-- | The type class underneath all Charts.
class Chart c
-- | Construct the URL used to show the chart.
chartURL :: Chart c => c -> String
-- | Set the width and height, in pixels, of the resulting image.
setSize :: Chart c => Int -> Int -> c -> c
-- | Set the title of the chart.
setTitle :: Chart c => String -> c -> c
-- | Set options for the display of the title of the chart.
setTitleOpts :: Chart c => String -> Int -> c -> c
-- | Set the data displayed by the chart.
setData :: Chart c => ChartData -> c -> c
-- | All the encoding methods produce ChartData, which is usable by
-- setData.
data ChartData
-- | Encode data using the "simple" encoding, which maps each input value
-- to a single letter in the URL. This produces minimal URLs but doesn't
-- have as lot of resolution. Input values must be in the range 0
-- <= x <= 61. Values outside the valid input range will be
-- considered missing data.
encodeDataSimple :: [[Int]] -> ChartData
-- | Encode data using the "text" encoding, which maps each input value to
-- its string representation (e.g. "3.4") in the URL. This has more
-- resolution than simple encoding but produces larger URLs. Input values
-- must be in the range 0 <= x <= 100. Values outside the
-- valid input range will be considered missing data. Values with more
-- than one decimal place of resolution will be rounded.
encodeDataText :: RealFrac a => [[a]] -> ChartData
-- | Encode data using the "extended" encoding, which maps each input value
-- to a two-character pair in base 64. This has more resolution than text
-- encoding and is more compact. Input values must be in the range 0
-- <= x <= 4095. Values outside the valid input range will be
-- considered missing data.
encodeDataExtended :: [[Int]] -> ChartData
-- | Set data set colors. The nth color specified here colors the nth data
-- set in the ChartData passed to setData. See
-- http://code.google.com/apis/chart/#line_bar_pie_colors for more
-- information.
setDataColors :: Chart c => [String] -> c -> c
-- | LegendChart represents charts that can display legends with
-- setLegend.
class Chart c => LegendChart c
-- | Set the legend for the corresponding data sets. The colors are taken
-- from the data set colors.
setLegend :: LegendChart c => [String] -> c -> c
-- | AxisLabelChart represents charts that can display axis labels.
class Chart c => AxisLabelChart c
-- | Set which axes to display. Repeating an AxisType produces
-- multiple sets of labels on that axis.
setAxisTypes :: AxisLabelChart c => [AxisType] -> c -> c
-- | Where to display an axis.
data AxisType
AxisBottom :: AxisType
AxisTop :: AxisType
AxisLeft :: AxisType
AxisRight :: AxisType
-- | Set axis labels. The nth list of strings in the argument sets the
-- labels for the nth axis specified with setAxisTypes. An empty
-- list of strings skips labelling the corresponding axis.
setAxisLabels :: AxisLabelChart c => [[String]] -> c -> c
-- | Set axis label positions. The nth list of Ints in the argument sets
-- the positions for the nth axis specified with setAxisTypes. An
-- empty list skips setting position for the corresponding axis.
setAxisLabelPositions :: AxisLabelChart c => [[Int]] -> c -> c
-- | Set axis ranges. The nth pair of Ints in the argument sets the range
-- for the nth axis specified with setAxisTypes.
setAxisRanges :: AxisLabelChart c => [(Int, Int)] -> c -> c
-- | Text alignment for labels on an axis.
data AxisAlignment
AlignLeft :: AxisAlignment
AlignCenter :: AxisAlignment
AlignRight :: AxisAlignment
-- | Set axis styles. The nth element in the argument sets the style for
-- the nth axis specified with setAxisTypes. Each style is a tuple
-- of (color, font size, text alignment).
setAxisStyles :: AxisLabelChart c => [(String, Int, AxisAlignment)] -> c -> c
data LineChart
newLineChart :: LineChart
data PieChart
newPieChart :: PieStyle -> PieChart
data PieStyle
Pie2D :: PieStyle
Pie3D :: PieStyle
-- | Set labels for the different data points on the chart. Specify missing
-- values by passing an empty string.
setLabels :: [String] -> PieChart -> PieChart
data BarChart
newBarChart :: Orientation -> BarStyle -> BarChart
data Orientation
Horizontal :: Orientation
Vertical :: Orientation
data BarStyle
Stacked :: BarStyle
Grouped :: BarStyle
-- | Venn diagram data is specified in a particular format. There should be
-- exactly seven data values, which represent, in order: circle A size,
-- circle B size, circle C size, A/B overlap, A/C overlap, B/C overlap,
-- A/B/C overlap.
data VennDiagram
newVennDiagram :: VennDiagram
instance Show ChartData
instance LegendChart VennDiagram
instance Chart VennDiagram
instance AxisLabelChart BarChart
instance LegendChart BarChart
instance Chart BarChart
instance Chart PieChart
instance AxisLabelChart LineChart
instance LegendChart LineChart
instance Chart LineChart