├── .gitignore ├── Makefile ├── README.md ├── doc ├── assets │ ├── radian-icon.ico │ ├── radian-logo-small.png │ ├── radian-logo.png │ └── radian-logo.svg ├── build │ ├── LICENSE │ ├── Setup.hs │ ├── radian-docs.cabal │ └── radian-docs.hs ├── changelog.markdown ├── community.markdown ├── contact.markdown ├── css │ ├── bootstrap-responsive.css │ ├── bootstrap.css │ ├── gallery.css │ ├── hljs.css │ ├── radian.css │ ├── style.css │ └── syntax.css ├── data │ ├── histo.csv │ ├── iris.csv │ ├── nations.json │ ├── stocks │ │ ├── CSCO.csv │ │ ├── DELL.csv │ │ ├── FB.csv │ │ ├── GOOG.csv │ │ ├── MSFT.csv │ │ └── YHOO.csv │ ├── tutorial-2 │ │ ├── d1.csv │ │ ├── d10.csv │ │ ├── d3.json │ │ ├── d4.json │ │ ├── d5.csv │ │ ├── d8.csv │ │ └── d9.csv │ ├── tutorial-3 │ │ ├── CSCO.csv │ │ ├── DELL.csv │ │ ├── FB.csv │ │ ├── GOOG.csv │ │ ├── MSFT.csv │ │ └── YHOO.csv │ ├── vic2012.csv │ ├── vic2012.json │ └── vic2012d.csv ├── documentation.markdown ├── download.markdown ├── downloads │ ├── radian-0.1.1.tar.gz │ ├── radian-0.1.1.zip │ ├── radian-0.1.2.tar.gz │ ├── radian-0.1.2.zip │ ├── radian-0.1.3.tar.gz │ ├── radian-0.1.3.zip │ ├── radian-0.1.tar.gz │ └── radian-0.1.zip ├── faq.markdown ├── favicon.ico ├── font │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── gallery │ ├── eg │ │ ├── 01.html │ │ ├── 02.html │ │ ├── 03.html │ │ ├── 04.html │ │ ├── 05.html │ │ ├── 06.html │ │ ├── 07.html │ │ ├── 08.html │ │ ├── 09.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 21.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 31.html │ │ ├── 32.html │ │ ├── 33.html │ │ ├── 34.html │ │ ├── 35.html │ │ ├── 38.html │ │ ├── 39.html │ │ ├── 41.html │ │ ├── 42.html │ │ ├── 43.html │ │ ├── 46.html │ │ ├── 47.html │ │ ├── 49.html │ │ ├── 50.html │ │ ├── 52.html │ │ ├── 53.html │ │ ├── 54.html │ │ ├── 67.html │ │ ├── 68.html │ │ ├── 69.html │ │ └── 74.html │ └── index.markdown ├── img │ ├── bayeshive-logo.svg │ └── radian-logo-small.png ├── index.markdown ├── js │ ├── angular.min.js │ ├── app.js │ ├── bootstrap.min.js │ ├── d3.v2.js │ ├── escodegen.browser.js │ ├── estraverse.js │ ├── hljs.js │ ├── html5slider.js │ ├── jquery.csv.js │ ├── jquery.js │ └── radian.min.js ├── license.markdown ├── news.markdown ├── radian-docs ├── ref-manual │ ├── 01-data-sets.markdown │ ├── 02-data-accessor-syntax.markdown │ ├── 03-categorical-data.markdown │ ├── 04-plot-directive.markdown │ ├── 05-plot-types.markdown │ ├── 06-palettes-and-interpolators.markdown │ ├── 07-legends.markdown │ ├── 08-user-interface-features.markdown │ ├── 09-plot-layout-directives.markdown │ ├── 10-radian-plotting-library.markdown │ ├── A-reserved-names.markdown │ └── index.markdown ├── roadmap.markdown ├── templates │ ├── default.html │ └── post.html ├── tmp │ ├── about.rst │ ├── contact.markdown │ ├── css │ │ └── default.css │ ├── images │ │ └── haskell-logo.png │ ├── index.html │ ├── posts │ │ ├── 2012-08-12-spqr.markdown │ │ ├── 2012-10-07-rosa-rosa-rosam.markdown │ │ ├── 2012-11-28-carpe-diem.markdown │ │ └── 2012-12-07-tu-quoque.markdown │ ├── site.hs │ └── templates │ │ ├── archive.html │ │ ├── default.html │ │ ├── post-list.html │ │ └── post.html └── tutorial │ ├── 1-function-plots │ ├── 1-1-plot-setup.markdown │ ├── 1-2-line-plots.markdown │ ├── 1-3-radian-expressions.markdown │ ├── 1-4-basic-interaction.markdown │ ├── 1-5-putting-it-together.markdown │ └── index.markdown │ ├── 2-data-plots │ ├── 2-1-accessing-plot-data.markdown │ ├── 2-2-scatter-plots.markdown │ ├── 2-3-bar-charts.markdown │ ├── 2-4-plot-layout.markdown │ ├── 2-5-putting-it-together.markdown │ └── index.markdown │ ├── 3-interactive-plots │ ├── 3-1-data-binding.markdown │ ├── 3-2-building-the-example.markdown │ └── index.markdown │ └── index.markdown ├── examples ├── css │ ├── .gitignore │ ├── app.css │ ├── bootstrap.css │ ├── hljs.css │ └── radian.css ├── data │ ├── mockJSON.json │ ├── nations.json │ ├── stocks │ │ ├── CSCO.csv │ │ ├── DELL.csv │ │ ├── FB.csv │ │ ├── GOOG.csv │ │ ├── MSFT.csv │ │ └── YHOO.csv │ ├── vic2012.csv │ └── vic2012.json ├── eg │ ├── .gitignore │ ├── 01.html │ ├── 02.html │ ├── 03.html │ ├── 04.html │ ├── 05.html │ ├── 06.html │ ├── 07.html │ ├── 08.html │ ├── 09.html │ ├── 10.html │ ├── 11.html │ ├── 12.html │ ├── 13.html │ ├── 14.html │ ├── 15.html │ ├── 16.html │ ├── 17.html │ ├── 18.html │ ├── 19.html │ ├── 20.html │ ├── 21.html │ ├── 22.html │ ├── 23.html │ ├── 24.html │ ├── 25.html │ ├── 26.html │ ├── 27.html │ ├── 28.html │ ├── 29.html │ ├── 30.html │ ├── 31.html │ ├── 32.html │ ├── 33.html │ ├── 34.html │ ├── 35.html │ ├── 36.html │ ├── 37.html │ ├── 38.html │ ├── 39.html │ ├── 40.html │ ├── 41.html │ ├── 42.html │ ├── 43.html │ ├── 44.html │ ├── 45.html │ ├── 46.html │ ├── 47.html │ ├── 48.html │ ├── 49.html │ ├── 50.html │ ├── 51.html │ ├── 52.html │ ├── 53.html │ ├── 54.html │ ├── 55.html │ ├── 56.html │ ├── 57.html │ ├── 58.html │ ├── 59.html │ ├── 60.html │ ├── 61.html │ ├── 62.html │ ├── 63.html │ ├── 64.html │ ├── 65.html │ ├── 66.html │ ├── 67.html │ ├── 68.html │ ├── 69.html │ ├── 70.html │ ├── 71.html │ ├── 72.html │ ├── 73.html │ ├── 74.html │ ├── 75.html │ ├── 76.html │ ├── 77.html │ ├── 78.html │ ├── 79.html │ ├── 80.html │ ├── 81.html │ ├── 82.html │ ├── 83.html │ └── 84.html ├── img │ ├── glyphicons-halflings-white.png │ └── glyphicons-halflings.png ├── index.html ├── js │ ├── app.js │ ├── radian.js │ └── radian.min.js ├── lib ├── tst.html └── web-server.js ├── experiments └── Layout.hs ├── lib ├── angular │ ├── angular-cookies.js │ ├── angular-cookies.min.js │ ├── angular-loader.js │ ├── angular-loader.min.js │ ├── angular-resource.js │ ├── angular-resource.min.js │ ├── angular-sanitize.js │ ├── angular-sanitize.min.js │ ├── angular.js │ ├── angular.min.js │ └── version.txt ├── bootstrap.js ├── d3.v2.js ├── escodegen.browser.js ├── hljs.js ├── jquery.csv-0.71.js ├── jquery.csv-0.71.min.js ├── jquery.csv.js └── jquery.js ├── radian.css ├── radian.js ├── radian.min.css ├── radian.min.js ├── src ├── core.js ├── data.js ├── debug.js ├── end.js ├── expressions.js ├── interpolation.js ├── layout.js ├── legends.js ├── lib.js ├── plots.js ├── radian.css ├── start.js ├── ui.js └── utils.js └── tools └── yuicompressor-2.4.8pre.jar /.gitignore: -------------------------------------------------------------------------------- 1 | /doc/_cache/* 2 | /doc/_site/* 3 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # See the README for installation instructions. 2 | 3 | YUICOMPRESSOR = tools/yuicompressor-2.4.8pre.jar 4 | UGLIFYJS = uglifyjs 5 | 6 | all: radian.js radian.min.js radian.css radian.min.css examples 7 | 8 | .INTERMEDIATE radian.js: \ 9 | src/start.js \ 10 | src/core.js \ 11 | src/expressions.js \ 12 | src/data.js \ 13 | src/layout.js \ 14 | src/plots.js \ 15 | src/interpolation.js \ 16 | src/lib.js \ 17 | src/legends.js \ 18 | src/ui.js \ 19 | src/utils.js \ 20 | src/debug.js \ 21 | src/end.js 22 | 23 | radian.min.js: radian.js Makefile 24 | @rm -f $@ 25 | $(UGLIFYJS) radian.js > $@ 26 | 27 | # java -jar $(YUICOMPRESSOR) radian.tmp.js > $@ 28 | 29 | radian%js: Makefile 30 | @rm -f $@ 31 | cat $(filter %.js,$^) > $@ 32 | 33 | #radian%js: Makefile 34 | # @rm -f $@ 35 | # @cat $(filter %.js,$^) > $@.tmp 36 | # $(JS_UGLIFY) -b -o $@ $@.tmp 37 | # @rm $@.tmp 38 | # @chmod a-w $@ 39 | 40 | radian.css: src/radian.css 41 | @cp src/radian.css radian.css 42 | 43 | radian.min.css: radian.css Makefile 44 | @rm -f $@ 45 | java -jar $(YUICOMPRESSOR) radian.css -o $@ 46 | 47 | examples: radian.js src/radian.css 48 | @cp radian.js examples/js 49 | @cp radian.min.js examples/js 50 | @cp src/radian.css examples/css 51 | 52 | clean: 53 | rm -f radian*.js 54 | 55 | DISTS=examples lib Makefile radian.css radian.js \ 56 | radian.min.js README.md src tools 57 | 58 | dist: 59 | tar czf dist.tar.gz $(addprefix ./,$(DISTS)) 60 | zip -r dist.zip $(addprefix ./,$(DISTS)) 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AngularJS + D3.js = Radian 2 | 3 | **Radian** is a JavaScript library for producing interactive SVG plots 4 | in HTML using Angular JS and D3.js. Using Angular directives leads to 5 | a clear and declarative API for representing plots that can respond to 6 | UI elements via Angular data binding. 7 | 8 | Documentation is on the 9 | [website](http://openbrainsrc.github.io/Radian/index.html) (some 10 | technical documentation is also on the 11 | [wiki](https://github.com/glutamate/Radian/wiki).) 12 | 13 | ## Installation 14 | 15 | Radian uses a very simple setup for building: there is a single 16 | Makefile in the root directory of the repository which concatenates 17 | all the Radian library source into a single `radian.js`, then minifies 18 | this (using UglifyJS) to make a `radian.min.js`. 19 | 20 | In order to use Radian in an HTML page, you need to include one or the 21 | other of the `radian.js` or `radian.min.js` scripts, along with the 22 | `radian.css` stylesheet and a small number of dependencies, versions 23 | of which are included in the `lib` directory of the repository: 24 | 25 | * `jquery.js`: the main [jQuery](http://www.jquery.com) library 26 | * `jquery.csv.js`: a 27 | [CSV parser library](https://code.google.com/p/jquery-csv/) 28 | * `bootstrap.js`: Javascript for the 29 | [Bootstrap framework](http://getbootstrap.com/2.3.2/index.html) 30 | (used for some UI elements) 31 | * `escodegen.browser.js`: a 32 | [library](https://github.com/Constellation/escodegen) for generating 33 | Javascript code from Mozilla's SpiderMonkey abstract syntax tree 34 | description 35 | * `d3.v2.js`: the [D3.js](http://d3js.org/) plotting library, on 36 | which Radian is based 37 | * `angular.js`: the [AngularJS framework](http://angularjs.org/) 38 | 39 | The versions of these libraries in the `lib` directory are known to 40 | work, but more recent versions may also be fine. 41 | 42 | To get an idea of how to set up a page to use Radian, you can take a 43 | look at the 44 | [index page](https://github.com/openbrainsrc/Radian/blob/master/examples/index.html) 45 | for the Radian examples. 46 | -------------------------------------------------------------------------------- /doc/assets/radian-icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/assets/radian-icon.ico -------------------------------------------------------------------------------- /doc/assets/radian-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/assets/radian-logo-small.png -------------------------------------------------------------------------------- /doc/assets/radian-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/assets/radian-logo.png -------------------------------------------------------------------------------- /doc/assets/radian-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 43 | 55 | 56 | 58 | 59 | 61 | image/svg+xml 62 | 64 | 65 | 66 | 67 | 68 | 73 | 76 | 88 | 100 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /doc/build/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /doc/build/radian-docs.cabal: -------------------------------------------------------------------------------- 1 | -- Initial blog.cabal generated by cabal init. For further documentation, 2 | -- see http://haskell.org/cabal/users-guide/ 3 | 4 | name: radian-docs 5 | version: 0.1.0.0 6 | synopsis: Radian documentation. 7 | -- description: 8 | homepage: http://openbrainsrc.github.io/Radian/ 9 | license: OtherLicense 10 | license-file: LICENSE 11 | author: Ian Ross 12 | maintainer: ian@skybluetrades.net 13 | -- copyright: 14 | -- category: 15 | build-type: Simple 16 | cabal-version: >=1.8 17 | 18 | executable radian-docs 19 | main-is: radian-docs.hs 20 | build-depends: base < 5 && >= 3, hakyll 21 | -------------------------------------------------------------------------------- /doc/build/radian-docs.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | module Main where 3 | 4 | import Data.Monoid (mappend, (<>)) 5 | import Hakyll 6 | 7 | 8 | 9 | -- | Set up deployment command. 10 | -- 11 | hakyllConf :: Configuration 12 | hakyllConf = defaultConfiguration { 13 | deployCommand = "cp -r _site/* ../../Radian-pages" 14 | } 15 | 16 | 17 | -- | Top-level pages. 18 | -- 19 | pages :: Pattern 20 | pages = fromList ["changelog.markdown", "community.markdown", 21 | "documentation.markdown", "download.markdown", 22 | "faq.markdown", "roadmap.markdown", "index.markdown", 23 | "license.markdown", "contact.markdown"] 24 | 25 | 26 | -- | Directories with more pages. 27 | -- 28 | directories :: Pattern 29 | directories = foldl1 (.||.) $ map doone ds 30 | where doone d = fromGlob (d <> "/*.markdown") .||. 31 | fromGlob (d <> "/**/*.markdown") 32 | ds = ["gallery", "posts", "ref-manual", "tutorial"] 33 | 34 | 35 | -- | Main program: adds a "publish" option to copy a draft out to the 36 | -- main posts area. 37 | -- 38 | main :: IO () 39 | main = hakyllWith hakyllConf $ do 40 | match "templates/*" $ compile templateCompiler 41 | 42 | match "css/*" $ do 43 | route idRoute 44 | compile copyFileCompiler 45 | 46 | match "js/*" $ do 47 | route idRoute 48 | compile copyFileCompiler 49 | 50 | match "font/*" $ do 51 | route idRoute 52 | compile copyFileCompiler 53 | 54 | match "downloads/*" $ do 55 | route idRoute 56 | compile copyFileCompiler 57 | 58 | match "gallery/eg/*" $ do 59 | route idRoute 60 | compile copyFileCompiler 61 | 62 | match "favicon.ico" $ do 63 | route idRoute 64 | compile copyFileCompiler 65 | 66 | match pages $ do 67 | route $ setExtension ".html" 68 | compile $ pandocCompiler 69 | >>= loadAndApplyTemplate "templates/default.html" defaultContext 70 | >>= relativizeUrls 71 | 72 | match directories $ do 73 | route $ setExtension ".html" 74 | compile $ pandocCompiler 75 | >>= loadAndApplyTemplate "templates/default.html" defaultContext 76 | >>= relativizeUrls 77 | 78 | match "img/*" $ do 79 | route idRoute 80 | compile copyFileCompiler 81 | 82 | match "data/**" $ do 83 | route idRoute 84 | compile copyFileCompiler 85 | 86 | match "posts/*.markdown" $ do 87 | route $ setExtension ".html" 88 | compile $ pandocCompiler 89 | >>= loadAndApplyTemplate "templates/post.html" postCtx 90 | >>= loadAndApplyTemplate "templates/default.html" postCtx 91 | >>= relativizeUrls 92 | 93 | 94 | -- | Context for posts. 95 | -- 96 | postCtx :: Context String 97 | postCtx = dateField "date" "%B %e, %Y" `mappend` defaultContext 98 | -------------------------------------------------------------------------------- /doc/changelog.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Version history 4 | --- 5 | 6 | ## Version history 7 | {% for post in site.tags.changelog %} 8 | --- 9 | 10 |

Version {{ post.title }}

11 | 12 |
{{ post.date | date: "%e" }}
13 |
{{ post.date | date: "%b" }}
14 |
{{ post.date | date: "%Y" }}
15 |
16 |
17 | {{ post.content }} 18 | {% endfor %} 19 | 20 | --- 21 | ### Version 0.0 22 | - Pre-release 23 | -------------------------------------------------------------------------------- /doc/community.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Community 4 | --- 5 | 6 | ## Community 7 | 8 | If you have questions related to the use of Radian, we have a 9 | [web forum](https://groups.google.com/forum/#!forum/radian-users) on 10 | Google Groups where we aim to respond to user queries as quickly as we 11 | can. 12 | 13 | If you have a bug to report, a feature to request or a patch to 14 | submit, you can submit issues or pull requests to the 15 | [Radian repository](https://github.com/openbrainsrc/Radian). 16 | 17 | Finally, if you want to help with the development of Radian, join us 18 | on GitHub! 19 | -------------------------------------------------------------------------------- /doc/contact.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Contact 4 | --- 5 | 6 | Radian is a product of OpenBrain and is being developed as part of the 7 | [BayesHive](http://www.bayeshive.com) project. 8 | 9 | **Ian Ross** is the main developer of Radian. You can reach him as 10 | [ian@skybluetrades.net](mailto:ian@skybluetrades.net). He's probably 11 | the person for technical questions about Radian. 12 | 13 | **Tom Nielsen** is the CEO of OpenBrain. You can reach him as 14 | [tomn@openbrain.org](mailto:tomn@openbrain.org). He's the person to 15 | send any commercial questions about Radian and related products. 16 | -------------------------------------------------------------------------------- /doc/css/gallery.css: -------------------------------------------------------------------------------- 1 | /* app css stylesheet */ 2 | 3 | .menu { 4 | list-style: none; 5 | border-bottom: 0.1em solid black; 6 | margin-bottom: 2em; 7 | padding: 0 0 0.5em; 8 | } 9 | 10 | .menu:before { 11 | content: "["; 12 | } 13 | 14 | .menu:after { 15 | content: "]"; 16 | } 17 | 18 | .menu > li { 19 | display: inline; 20 | } 21 | 22 | .menu > li:before { 23 | content: "|"; 24 | padding-right: 0.3em; 25 | } 26 | 27 | .menu > li:nth-child(1):before { 28 | content: ""; 29 | padding: 0; 30 | } 31 | 32 | plot { height: 300px; width: 500px; } 33 | 34 | .navbar-gallery .navbar-inner { 35 | min-height: 30px; 36 | } 37 | 38 | .navbar-gallery .nav>li>a { 39 | padding: 5px; 40 | } 41 | -------------------------------------------------------------------------------- /doc/css/hljs.css: -------------------------------------------------------------------------------- 1 | pre code{display:block;color:black;background:ghostwhite}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .lisp .title,pre .subst,pre .request,pre .status{color:black;font-weight:bold}pre .number,pre .hexcolor{color:#40a070}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .label,pre .vhdl .literal,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:navy;font-weight:normal}pre .attribute,pre .variable,pre .instancevar,pre .lisp .body{color:teal}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .ruby .symbol .keyword,pre .ruby .symbol .keymethods,pre .lisp .keyword,pre .tex .special,pre .input_number{color:#990073}pre .builtin,pre .built_in,pre .lisp .title{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}pre .tex .formula{opacity:.5} 2 | -------------------------------------------------------------------------------- /doc/css/style.css: -------------------------------------------------------------------------------- 1 | .left50pct { 2 | float: left; 3 | width: 49%; 4 | margin: 0; 5 | } 6 | .right50pct { 7 | float: right; 8 | width: 49%; 9 | margin: 0; 10 | } 11 | .clear50pct { clear: both; } 12 | 13 | .navbar-main .navbar-inner { 14 | background-image: url("../img/radian-logo-small.png"); 15 | background-repeat: no-repeat; background-position: 15px 5px; 16 | } 17 | .navbar-main .brand { margin-left: 15px; } 18 | 19 | footer { background-color: #eee; color: #555; margin: 5px 0px; } 20 | 21 | .nyi { color: #888; font-style: italic; } 22 | 23 | .plot-center { width: 100%; } 24 | .plot-center .radian { margin-left: auto; margin-right: auto; } 25 | 26 | .plot-title { 27 | float: right; 28 | margin-right: 10px; 29 | margin-top: 5px; 30 | font-weight: bold; 31 | } 32 | 33 | .exercise { 34 | border: 1px solid #999; 35 | padding: 10px; 36 | padding-bottom: 0; 37 | } 38 | 39 | .plot-hidden { position: absolute; left: -10000px; } 40 | -------------------------------------------------------------------------------- /doc/css/syntax.css: -------------------------------------------------------------------------------- 1 | /* Generated by pandoc. */ 2 | table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre 3 | { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } 4 | td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } 5 | td.sourceCode { padding-left: 5px; } 6 | pre.sourceCode { padding-left: 1em; background-color: ghostwhite; } 7 | pre.sourceCode span.kw { color: #007020; font-weight: bold; } 8 | pre.sourceCode span.dt { color: #902000; } 9 | pre.sourceCode span.dv { color: #40a070; } 10 | pre.sourceCode span.bn { color: #40a070; } 11 | pre.sourceCode span.fl { color: #40a070; } 12 | pre.sourceCode span.ch { color: #4070a0; } 13 | pre.sourceCode span.st { color: #4070a0; } 14 | pre.sourceCode span.co { color: #60a0b0; font-style: italic; } 15 | pre.sourceCode span.ot { color: #007020; } 16 | pre.sourceCode span.al { color: red; font-weight: bold; } 17 | pre.sourceCode span.fu { color: #06287e; } 18 | pre.sourceCode span.re { } 19 | pre.sourceCode span.er { color: red; font-weight: bold; } 20 | -------------------------------------------------------------------------------- /doc/data/iris.csv: -------------------------------------------------------------------------------- 1 | 5.1,3.5,1.4,0.2,"I. setosa" 2 | 4.9,3,1.4,0.2,"I. setosa" 3 | 4.7,3.2,1.3,0.2,"I. setosa" 4 | 4.6,3.1,1.5,0.2,"I. setosa" 5 | 5,3.6,1.4,0.2,"I. setosa" 6 | 5.4,3.9,1.7,0.4,"I. setosa" 7 | 4.6,3.4,1.4,0.3,"I. setosa" 8 | 5,3.4,1.5,0.2,"I. setosa" 9 | 4.4,2.9,1.4,0.2,"I. setosa" 10 | 4.9,3.1,1.5,0.1,"I. setosa" 11 | 5.4,3.7,1.5,0.2,"I. setosa" 12 | 4.8,3.4,1.6,0.2,"I. setosa" 13 | 4.8,3,1.4,0.1,"I. setosa" 14 | 4.3,3,1.1,0.1,"I. setosa" 15 | 5.8,4,1.2,0.2,"I. setosa" 16 | 5.7,4.4,1.5,0.4,"I. setosa" 17 | 5.4,3.9,1.3,0.4,"I. setosa" 18 | 5.1,3.5,1.4,0.3,"I. setosa" 19 | 5.7,3.8,1.7,0.3,"I. setosa" 20 | 5.1,3.8,1.5,0.3,"I. setosa" 21 | 5.4,3.4,1.7,0.2,"I. setosa" 22 | 5.1,3.7,1.5,0.4,"I. setosa" 23 | 4.6,3.6,1,0.2,"I. setosa" 24 | 5.1,3.3,1.7,0.5,"I. setosa" 25 | 4.8,3.4,1.9,0.2,"I. setosa" 26 | 5,3,1.6,0.2,"I. setosa" 27 | 5,3.4,1.6,0.4,"I. setosa" 28 | 5.2,3.5,1.5,0.2,"I. setosa" 29 | 5.2,3.4,1.4,0.2,"I. setosa" 30 | 4.7,3.2,1.6,0.2,"I. setosa" 31 | 4.8,3.1,1.6,0.2,"I. setosa" 32 | 5.4,3.4,1.5,0.4,"I. setosa" 33 | 5.2,4.1,1.5,0.1,"I. setosa" 34 | 5.5,4.2,1.4,0.2,"I. setosa" 35 | 4.9,3.1,1.5,0.2,"I. setosa" 36 | 5,3.2,1.2,0.2,"I. setosa" 37 | 5.5,3.5,1.3,0.2,"I. setosa" 38 | 4.9,3.6,1.4,0.1,"I. setosa" 39 | 4.4,3,1.3,0.2,"I. setosa" 40 | 5.1,3.4,1.5,0.2,"I. setosa" 41 | 5,3.5,1.3,0.3,"I. setosa" 42 | 4.5,2.3,1.3,0.3,"I. setosa" 43 | 4.4,3.2,1.3,0.2,"I. setosa" 44 | 5,3.5,1.6,0.6,"I. setosa" 45 | 5.1,3.8,1.9,0.4,"I. setosa" 46 | 4.8,3,1.4,0.3,"I. setosa" 47 | 5.1,3.8,1.6,0.2,"I. setosa" 48 | 4.6,3.2,1.4,0.2,"I. setosa" 49 | 5.3,3.7,1.5,0.2,"I. setosa" 50 | 5,3.3,1.4,0.2,"I. setosa" 51 | 7,3.2,4.7,1.4,"I. versicolor" 52 | 6.4,3.2,4.5,1.5,"I. versicolor" 53 | 6.9,3.1,4.9,1.5,"I. versicolor" 54 | 5.5,2.3,4,1.3,"I. versicolor" 55 | 6.5,2.8,4.6,1.5,"I. versicolor" 56 | 5.7,2.8,4.5,1.3,"I. versicolor" 57 | 6.3,3.3,4.7,1.6,"I. versicolor" 58 | 4.9,2.4,3.3,1,"I. versicolor" 59 | 6.6,2.9,4.6,1.3,"I. versicolor" 60 | 5.2,2.7,3.9,1.4,"I. versicolor" 61 | 5,2,3.5,1,"I. versicolor" 62 | 5.9,3,4.2,1.5,"I. versicolor" 63 | 6,2.2,4,1,"I. versicolor" 64 | 6.1,2.9,4.7,1.4,"I. versicolor" 65 | 5.6,2.9,3.6,1.3,"I. versicolor" 66 | 6.7,3.1,4.4,1.4,"I. versicolor" 67 | 5.6,3,4.5,1.5,"I. versicolor" 68 | 5.8,2.7,4.1,1,"I. versicolor" 69 | 6.2,2.2,4.5,1.5,"I. versicolor" 70 | 5.6,2.5,3.9,1.1,"I. versicolor" 71 | 5.9,3.2,4.8,1.8,"I. versicolor" 72 | 6.1,2.8,4,1.3,"I. versicolor" 73 | 6.3,2.5,4.9,1.5,"I. versicolor" 74 | 6.1,2.8,4.7,1.2,"I. versicolor" 75 | 6.4,2.9,4.3,1.3,"I. versicolor" 76 | 6.6,3,4.4,1.4,"I. versicolor" 77 | 6.8,2.8,4.8,1.4,"I. versicolor" 78 | 6.7,3,5,1.7,"I. versicolor" 79 | 6,2.9,4.5,1.5,"I. versicolor" 80 | 5.7,2.6,3.5,1,"I. versicolor" 81 | 5.5,2.4,3.8,1.1,"I. versicolor" 82 | 5.5,2.4,3.7,1,"I. versicolor" 83 | 5.8,2.7,3.9,1.2,"I. versicolor" 84 | 6,2.7,5.1,1.6,"I. versicolor" 85 | 5.4,3,4.5,1.5,"I. versicolor" 86 | 6,3.4,4.5,1.6,"I. versicolor" 87 | 6.7,3.1,4.7,1.5,"I. versicolor" 88 | 6.3,2.3,4.4,1.3,"I. versicolor" 89 | 5.6,3,4.1,1.3,"I. versicolor" 90 | 5.5,2.5,4,1.3,"I. versicolor" 91 | 5.5,2.6,4.4,1.2,"I. versicolor" 92 | 6.1,3,4.6,1.4,"I. versicolor" 93 | 5.8,2.6,4,1.2,"I. versicolor" 94 | 5,2.3,3.3,1,"I. versicolor" 95 | 5.6,2.7,4.2,1.3,"I. versicolor" 96 | 5.7,3,4.2,1.2,"I. versicolor" 97 | 5.7,2.9,4.2,1.3,"I. versicolor" 98 | 6.2,2.9,4.3,1.3,"I. versicolor" 99 | 5.1,2.5,3,1.1,"I. versicolor" 100 | 5.7,2.8,4.1,1.3,"I. versicolor" 101 | 6.3,3.3,6,2.5,"I. virginica" 102 | 5.8,2.7,5.1,1.9,"I. virginica" 103 | 7.1,3,5.9,2.1,"I. virginica" 104 | 6.3,2.9,5.6,1.8,"I. virginica" 105 | 6.5,3,5.8,2.2,"I. virginica" 106 | 7.6,3,6.6,2.1,"I. virginica" 107 | 4.9,2.5,4.5,1.7,"I. virginica" 108 | 7.3,2.9,6.3,1.8,"I. virginica" 109 | 6.7,2.5,5.8,1.8,"I. virginica" 110 | 7.2,3.6,6.1,2.5,"I. virginica" 111 | 6.5,3.2,5.1,2,"I. virginica" 112 | 6.4,2.7,5.3,1.9,"I. virginica" 113 | 6.8,3,5.5,2.1,"I. virginica" 114 | 5.7,2.5,5,2,"I. virginica" 115 | 5.8,2.8,5.1,2.4,"I. virginica" 116 | 6.4,3.2,5.3,2.3,"I. virginica" 117 | 6.5,3,5.5,1.8,"I. virginica" 118 | 7.7,3.8,6.7,2.2,"I. virginica" 119 | 7.7,2.6,6.9,2.3,"I. virginica" 120 | 6,2.2,5,1.5,"I. virginica" 121 | 6.9,3.2,5.7,2.3,"I. virginica" 122 | 5.6,2.8,4.9,2,"I. virginica" 123 | 7.7,2.8,6.7,2,"I. virginica" 124 | 6.3,2.7,4.9,1.8,"I. virginica" 125 | 6.7,3.3,5.7,2.1,"I. virginica" 126 | 7.2,3.2,6,1.8,"I. virginica" 127 | 6.2,2.8,4.8,1.8,"I. virginica" 128 | 6.1,3,4.9,1.8,"I. virginica" 129 | 6.4,2.8,5.6,2.1,"I. virginica" 130 | 7.2,3,5.8,1.6,"I. virginica" 131 | 7.4,2.8,6.1,1.9,"I. virginica" 132 | 7.9,3.8,6.4,2,"I. virginica" 133 | 6.4,2.8,5.6,2.2,"I. virginica" 134 | 6.3,2.8,5.1,1.5,"I. virginica" 135 | 6.1,2.6,5.6,1.4,"I. virginica" 136 | 7.7,3,6.1,2.3,"I. virginica" 137 | 6.3,3.4,5.6,2.4,"I. virginica" 138 | 6.4,3.1,5.5,1.8,"I. virginica" 139 | 6,3,4.8,1.8,"I. virginica" 140 | 6.9,3.1,5.4,2.1,"I. virginica" 141 | 6.7,3.1,5.6,2.4,"I. virginica" 142 | 6.9,3.1,5.1,2.3,"I. virginica" 143 | 5.8,2.7,5.1,1.9,"I. virginica" 144 | 6.8,3.2,5.9,2.3,"I. virginica" 145 | 6.7,3.3,5.7,2.5,"I. virginica" 146 | 6.7,3,5.2,2.3,"I. virginica" 147 | 6.3,2.5,5,1.9,"I. virginica" 148 | 6.5,3,5.2,2,"I. virginica" 149 | 6.2,3.4,5.4,2.3,"I. virginica" 150 | 5.9,3,5.1,1.8,"I. virginica" 151 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d1.csv: -------------------------------------------------------------------------------- 1 | 1,5 2 | 2,10 3 | 3,14 4 | 4,12 5 | 5,22 6 | 6,6 7 | 7,5 8 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d10.csv: -------------------------------------------------------------------------------- 1 | -0.21991614 2 | -1.21243350 3 | 0.25558776 4 | -0.13629943 5 | -2.22833941 6 | -1.60829920 7 | -0.55755778 8 | -0.23925929 9 | 0.40663494 10 | 0.99105558 11 | -0.95120549 12 | -1.67478975 13 | -0.14602045 14 | -0.01902537 15 | -0.40205444 16 | 1.44275512 17 | -1.05451039 18 | -1.01921213 19 | 1.03799046 20 | -0.33640740 21 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d3.json: -------------------------------------------------------------------------------- 1 | [{ "a": 1, "b": 5 }, 2 | { "a": 2, "b": 10 }, 3 | { "a": 3, "b": 14 }, 4 | { "a": 4, "b": 12 }, 5 | { "a": 5, "b": 22 }, 6 | { "a": 6, "b": 6 }, 7 | { "a": 7, "b": 5 }] 8 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d4.json: -------------------------------------------------------------------------------- 1 | [{ "a": 1, "b": 5 }, 2 | { "a": 2, "b": 10 }, 3 | { "a": 3, "b": 14 }, 4 | { "a": 4, "b": 12 }, 5 | { "a": 5, "b": 22 }, 6 | { "a": 6, "b": 6 }, 7 | { "a": 7, "b": 5 }] 8 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d5.csv: -------------------------------------------------------------------------------- 1 | "2012-01-01", 3.80 2 | "2012-01-02", 5.50 3 | "2012-01-03", 7.90 4 | "2012-01-04", 8.50 5 | "2012-01-05", 4.90 6 | "2012-01-06", 2.70 7 | "2012-01-07", 5.70 8 | "2012-01-08", 6.50 9 | "2012-01-09", 6.80 10 | "2012-01-10", 2.20 11 | "2012-01-11", 1.40 12 | "2012-01-12", 1.60 13 | "2012-01-13", -0.10 14 | "2012-01-14", 1.70 15 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d8.csv: -------------------------------------------------------------------------------- 1 | 1,34 2 | 2,22 3 | 3,53 4 | 4,27 5 | 5,13 6 | 6,8 7 | 7,5 8 | 8,12 9 | 9,29 10 | 10,44 11 | 11,27 12 | 12,30 13 | -------------------------------------------------------------------------------- /doc/data/tutorial-2/d9.csv: -------------------------------------------------------------------------------- 1 | 1,34,10 2 | 2,22,20 3 | 3,53,50 4 | 4,27,20 5 | 5,13,30 6 | 6,8,40 7 | 7,5,10 8 | 8,12,5 9 | 9,29,40 10 | 10,44,20 11 | 11,27,10 12 | 12,30,5 13 | -------------------------------------------------------------------------------- /doc/documentation.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Documentation 4 | --- 5 | 6 | # Documentation 7 | 8 | ### [Tutorial](tutorial) 9 | ### [Reference manual](ref-manual) 10 | ### [Examples gallery](gallery) 11 | 12 | There is also technical documentation for Radian developers on the 13 | GitHub [wiki](https://github.com/openbrainsrc/Radian/wiki) associated 14 | with the project. 15 | -------------------------------------------------------------------------------- /doc/download.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Download 4 | --- 5 | 6 | ## Download 7 | 8 | The current release version is 0.1.2, which was released on 9 | 2013-10-09: 10 | 11 | | TGZ |      |ZIP |      |Date | 12 | |-----|-|-----|-|-----| 13 | |[radian-0.1.3.tar.gz](/downloads/radian-0.1.3.tar.gz)| |[radian-0.1.3.zip](/downloads/radian-0.1.3.zip)| |2013-12-04| 14 | |[radian-0.1.2.tar.gz](/downloads/radian-0.1.2.tar.gz)| |[radian-0.1.2.zip](/downloads/radian-0.1.2.zip)| |2013-10-09| 15 | |[radian-0.1.1.tar.gz](/downloads/radian-0.1.1.tar.gz)| |[radian-0.1.1.zip](/downloads/radian-0.1.1.zip)| |2013-07-30| 16 | |[radian-0.1.tar.gz](/downloads/radian-0.1.tar.gz)| |[radian-0.1.zip](/downloads/radian-0.1.zip)| |2013-07-10| 17 | 18 |
19 | ## GitHub repository 20 | 21 | The latest version of the source code, including tags for all 22 | releases, is always available in our 23 | [GitHub repository](https://github.com/openbrainsrc/Radian). 24 | 25 |
26 | ## Changelog 27 | 28 | ##### Version 0.1.3 (2013-12-04) 29 | 30 | - Axis type switching UI 31 | - Histogram bin count UI 32 | - Improved UI interactivity 33 | 34 | ##### Version 0.1.2 (2013-10-09) 35 | 36 | - Move custom version of estraverse into Radian code 37 | - Begin UI reorganisation 38 | - Basic categorical data handling: bar charts, grouping, ordering, 39 | simple box plots 40 | - Fix behaviour of Radian expression free variable watchers for 41 | function values. 42 | - Improve data download behaviour: changes to `SRC` attributes now 43 | trigger data download. 44 | - Fix treatment of Angular expressions in attributes. 45 | - Fix JSON date handling (issue #24). 46 | - Add `nub` function to plotting library. 47 | - Add `flatten` function to plotting library to help with using 48 | hierarchical JSON data. 49 | - Make JSON data processing more lenient: string values that can be 50 | interpreted as numbers are converted to numeric values. 51 | 52 | ##### Version 0.1.1 (2013-07-30) 53 | 54 | - Fix for processing of dates in JSON data. 55 | - Data type for `` with `SRC` defaults to JSON if no 56 | `TYPE` attribute is given. 57 | -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.1.tar.gz -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.1.zip -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.2.tar.gz -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.2.zip -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.3.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.3.tar.gz -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.3.zip -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.tar.gz -------------------------------------------------------------------------------- /doc/downloads/radian-0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/downloads/radian-0.1.zip -------------------------------------------------------------------------------- /doc/faq.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: FAQ 4 | --- 5 | 6 | Just a placeholder for now: ask questions and we'll put the answers 7 | here... 8 | -------------------------------------------------------------------------------- /doc/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/favicon.ico -------------------------------------------------------------------------------- /doc/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/font/FontAwesome.otf -------------------------------------------------------------------------------- /doc/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /doc/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /doc/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /doc/gallery/eg/12.html: -------------------------------------------------------------------------------- 1 |

Function plots #1

2 | 3 |

Here we plot some simple functions. The x values which we 4 | generate using Radian's seq function are shared between 5 | the two plots by setting them in the 6 | surrounding <plot> directive. The y 7 | values are calculated using the vectorised sin 8 | and cos functions.

9 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/gallery/eg/13.html: -------------------------------------------------------------------------------- 1 |

Function plots #2

2 | 3 |

This plot demonstrates the zooming user interface for plots. Drag 4 | on the bottom context panel to focus the upper panel. Click outside 5 | the focused region on the context panel to reset the view.

6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/gallery/eg/14.html: -------------------------------------------------------------------------------- 1 |

Expression vectorisation)

2 | 3 |

The syntax of Radian expressions is a superset of the JavaScript 4 | expression syntax. Radian performs vectorisation of common 5 | arithmetic operators (including the ** exponentiation 6 | operator) and functions, making it easy to express functions of 7 | arrays. Here, we define x-coordinate values and calculate a 8 | polynomial function of x to give the y-coordinates. 9 | The expression for y is automatically applied to all of the 10 | values in the x array.

11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/gallery/eg/15.html: -------------------------------------------------------------------------------- 1 |

Data binding

2 | 3 |

Binding UI elements to data values is easy with Angular. Radian 4 | exploits this by making all Angular scope variables available within 5 | Radian expressions, and by responding to changes in Angular scope 6 | variables used in Radian expressions by re-rendering plots. This 7 | makes it possible to build interactive plots without writing a line 8 | of JavaScript.

9 |
10 | 11 | 12 | 13 | 14 |
15 |
16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/gallery/eg/19.html: -------------------------------------------------------------------------------- 1 |

Log axes

2 | 3 |

This example shows how to do very simple binding to user interface 4 | elements in a web page using Angular's data binding capabilities. 5 | It also shows the use of the AXIS-Y-TRANSFORM attribute 6 | to plot data on logarithmic axes.

7 |
9 | 10 | 12 |
13 |
14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /doc/gallery/eg/21.html: -------------------------------------------------------------------------------- 1 |

Basic bar chart

2 | 3 | 5 | 6 | 7 | 8 | 9 | 1, 2 10 | 2, 4 11 | 3, 8 12 | 4, 16 13 | 5, 32 14 | 6, 48 15 | 7, 24 16 | 8, 12 17 | 9, 6 18 | 10, 3 19 | 20 | -------------------------------------------------------------------------------- /doc/gallery/eg/26.html: -------------------------------------------------------------------------------- 1 |

Discrete palette

2 | 3 |

Discrete palettes map from discrete sets of labels (here 4 | “male” and “female”) to discrete sets of 5 | colours. The <palette> directive creates 6 | a palette function which can be called from Radian 7 | expressions.

8 | 9 | female #FF7F7F; male #7F7FFF 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | Tom,35.1,6.3,male,20 20 | Harriet,1.5,2.1,female,10 21 | Antonia,35.2,5.1,female,25 22 | Ada,4.5,3.1,female,12 23 | Foo,10.1,3.9,female,15 24 | Bar,80.4,9.1,female,22 25 | Baz,5.2,3.2,male,13 26 | Jim,60.1,8.1,male,24 27 | Ted,70.1,9.1,male,18 28 | Jerry,40.6,7,male,16 29 | 30 | -------------------------------------------------------------------------------- /doc/gallery/eg/27.html: -------------------------------------------------------------------------------- 1 |

Discrete marker palette

2 | 3 |

Palettes can in fact be used to map from any set of discrete labels 4 | to any other set, so can be used to map from labels to markers for 5 | example.

6 | 7 | female circle; male square 8 | 9 | 10 | 13 | 15 | 16 | 17 | 18 | Tom,35.1,6.3,male,20 19 | Harriet,1.5,2.1,female,10 20 | Antonia,35.2,5.1,female,25 21 | Ada,4.5,3.1,female,12 22 | Foo,10.1,3.9,female,15 23 | Bar,80.4,9.1,female,22 24 | Baz,5.2,3.2,male,13 25 | Jim,60.1,8.1,male,24 26 | Ted,70.1,9.1,male,18 27 | Jerry,40.6,7,male,16 28 | 29 | -------------------------------------------------------------------------------- /doc/gallery/eg/28.html: -------------------------------------------------------------------------------- 1 |

Functions with palettes

2 | 3 |

Palettes can be applied to function plots as easily as to data 4 | plots. Here we see an example where the stroke colour is varied 5 | along the plotted curves. Radian attempts to break such curves into 6 | a relatively small number of segments for stroking to keep things 7 | efficient.

8 | 9 | 0 blue; 0.5 grey; 1 red 10 | 11 | 12 | 13 | 0 green; 0.5 yellow; 1 orange 14 | 15 | 16 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/gallery/eg/31.html: -------------------------------------------------------------------------------- 1 |

Using <plot-options>

2 | 3 |

The <plot-options> directive can be used to 4 | capture common attributes that are shared between a group of plots, 5 | or just to make things clearer. Here, we just set up some paint 6 | attributes for two simple plots.

7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /doc/gallery/eg/33.html: -------------------------------------------------------------------------------- 1 |

Banded palettes

2 | 3 |

Banded palettes do not interpolate colours, but assign constant 4 | colours to ranges of their input.

5 | 6 | 0 blue; 0.5 red 7 | 8 | 9 | 10 | 0 green; 0.5 orange 11 | 12 | 13 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /doc/gallery/eg/34.html: -------------------------------------------------------------------------------- 1 |

Data access via URL

2 | 3 |

Instead of providing data within the body of 4 | a <plot-data> directive, we can load it from a 5 | URL passed via <plot-data>'s SRC 6 | attribute.

7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/gallery/eg/38.html: -------------------------------------------------------------------------------- 1 |

Stroke gradient palette

2 | 3 |

This example varies the stroke colour along a curve to reflect the 4 | gradient of the curve — red colours for negative gradients, 5 | blue for positive and grey for maxima and minima.

6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /doc/gallery/eg/39.html: -------------------------------------------------------------------------------- 1 |

Health & Wealth of Nations

2 | 3 |

This rather complex example is an attempt to duplicate one of the 4 | D3.js examples using Radian. Drag the slider to step through the 5 | years of data. There are some dud data points, and a 6 | custom fillIn function is needed to do data 7 | pre-processing, but it's not bad.

8 |
9 | 10 | 12 |
13 |
14 | 15 | 16 | 17 | 18 | 28 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /doc/gallery/eg/41.html: -------------------------------------------------------------------------------- 1 |

Plot titles

2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/gallery/eg/42.html: -------------------------------------------------------------------------------- 1 |

Row layout

2 | 3 |

Plots laid out in a row:

4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/gallery/eg/43.html: -------------------------------------------------------------------------------- 1 |

Column layout

2 | 3 |

Plots laid out in a column:

4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/gallery/eg/46.html: -------------------------------------------------------------------------------- 1 |

Hierarchical layout

2 | 3 |

Layout directives can be nested to make more or less any 4 | arrangement of plots that you want.

5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/gallery/eg/47.html: -------------------------------------------------------------------------------- 1 |

Grid layout

2 | 3 |

In simple cases, the <plot-grid> directive can 4 | be easier to use than a tree of <plot-row> 5 | and <plot-col> directives.

6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/gallery/eg/49.html: -------------------------------------------------------------------------------- 1 |

Font selection

2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/gallery/eg/52.html: -------------------------------------------------------------------------------- 1 |

Example 52 (simple heat map)

2 | 3 | 4 | 6 | 7 | 8 | 9 | -1.358218406,-1.680180041 10 | 1.019182305,0.372856303 11 | -0.046088243,-1.437769350 12 | -1.652131815,1.508971050 13 | 0.880858861,-1.351061092 14 | -0.421879985,0.460046324 15 | -1.775861788,-0.377353402 16 | -0.432299413,-0.544505160 17 | 0.597065895,1.063556238 18 | 1.018733929,0.516806935 19 | 0.693442592,0.818444791 20 | -0.151663918,0.365657710 21 | -0.484266425,1.106456147 22 | -0.563660625,-0.340853294 23 | 1.027548529,1.374454347 24 | 0.018512709,0.497770566 25 | -0.898245409,-0.273169274 26 | 0.401530957,-0.674111550 27 | -1.614098348,-0.004893727 28 | 0.475737412,-0.167170150 29 | 2.896699296,-1.644885154 30 | 0.369390551,-0.363407053 31 | 0.195674450,0.796902390 32 | -0.455183324,0.579003105 33 | -0.840773769,-1.275440408 34 | 0.201168111,-0.145193347 35 | -0.977505714,-1.097588725 36 | -0.157543842,0.931822793 37 | 1.213436851,1.298792286 38 | -0.095741952,2.106816580 39 | -0.111263004,-2.078441409 40 | -1.052447580,0.491906540 41 | -0.223993725,0.596251685 42 | -0.052027197,0.232441049 43 | 1.649155223,1.106705488 44 | 0.034758550,0.089969971 45 | 0.630451636,-2.019073856 46 | 0.317187144,0.159083991 47 | 0.907639885,0.389694700 48 | 3.507502055,0.745939039 49 | 0.241160732,0.863903018 50 | -1.626223538,1.011512303 51 | 0.989728940,1.009256748 52 | 0.617118223,-0.954345976 53 | 1.281573323,-0.980004467 54 | 0.495453751,-0.368463663 55 | 0.123889926,-1.535610105 56 | 0.335354589,0.014701983 57 | -0.338484233,-0.666617714 58 | 1.027240081,-0.576596127 59 | 0.171040222,0.260085664 60 | 0.111490346,-0.164757454 61 | -0.596089124,1.235859094 62 | 0.375068347,1.108377818 63 | 0.875997125,0.491710332 64 | 0.226746929,0.666406706 65 | -2.352907879,-0.200828814 66 | -0.300730546,-0.467913893 67 | 0.206455528,0.983026064 68 | -0.740838462,-1.625012236 69 | -0.282646786,0.966176452 70 | -1.444361250,-0.192205832 71 | 1.215377424,-0.655657397 72 | -0.717685934,-1.684864615 73 | -0.592155462,-0.063825352 74 | 2.519884926,-1.399751647 75 | -0.235264465,-1.448776053 76 | 0.168046668,-0.677469532 77 | -0.858446520,0.075247524 78 | -0.426844135,0.138844531 79 | -1.010234356,0.591016780 80 | 0.679895798,0.764228183 81 | -0.387500047,-1.692940404 82 | 2.520777242,1.920958205 83 | -0.488662927,0.472892173 84 | 0.009272712,-0.936161622 85 | -0.053498613,0.573661462 86 | -0.457075249,0.502713786 87 | -0.574686946,-0.257165813 88 | 0.285084048,0.307028734 89 | -0.445707159,0.529429678 90 | 1.748563380,-1.349685484 91 | 0.428504645,0.141547824 92 | -0.710781981,1.296516455 93 | -0.907194831,-1.654794968 94 | -0.654270763,-1.238840341 95 | -0.174782471,0.165698550 96 | 2.120830108,0.656595369 97 | 0.256434229,-0.068412006 98 | 0.097702199,0.657398908 99 | -1.643564412,-1.029640776 100 | 1.287269469,0.253276516 101 | -0.779834081,-0.752704032 102 | -0.400443388,-0.144411218 103 | 0.864388402,-1.466337337 104 | -0.326945256,-2.497433918 105 | 0.312223956,0.377362888 106 | 0.948793386,0.738802681 107 | 0.456457305,0.478290244 108 | 0.466944067,-0.500205475 109 | 110 | -------------------------------------------------------------------------------- /doc/gallery/eg/67.html: -------------------------------------------------------------------------------- 1 |

Data access via URL with Angular binding

2 | 3 |

The SRC attribute in 4 | the <plot-data> directive can be given an Angular 5 | expression, allowing data sources to be selected dynamically. Here, 6 | we use Angular data binding to select a stock symbol, and build a 7 | data source URL using this from an Angular expression. As we select 8 | a stock symbol, a HTTP request is triggered to download the new data 9 | set. When the data set is retrieved, a replot is triggered.

10 | 11 |
12 | 13 | 21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/gallery/eg/74.html: -------------------------------------------------------------------------------- 1 |

Histograms bin size and axis UI

2 | 3 |

Mouse over the plot to see the UI elements you can use to 4 | manipulate the plot axis type and bin count.

5 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /doc/gallery/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Gallery 4 | --- 5 | 6 | 27 | -------------------------------------------------------------------------------- /doc/img/radian-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/img/radian-logo-small.png -------------------------------------------------------------------------------- /doc/news.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: News archive 4 | --- 5 | 6 | ## News archive 7 | {% for post in site.tags.news %} 8 | --- 9 | 10 |

{{ post.title }}

11 | 12 |
{{ post.date | date: "%e" }}
13 |
{{ post.date | date: "%b" }}
14 |
{{ post.date | date: "%Y" }}
15 |
16 |
17 | {{ post.content }} 18 | {% endfor %} 19 | -------------------------------------------------------------------------------- /doc/radian-docs: -------------------------------------------------------------------------------- 1 | ./build/dist_Radian/build/radian-docs/radian-docs -------------------------------------------------------------------------------- /doc/ref-manual/10-radian-plotting-library.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Reference manual - Radian plotting library 4 | --- 5 | 6 | # 9. The Radian plotting library 7 | 8 | Within Radian expressions, a standard set of constants and functions 9 | are made available. Some of these are standard JavaScript functions, 10 | some are adapted from the D3 plotting library, and some are unique to 11 | Radian. 12 | 13 |
14 | ## JavaScript standard functions 15 | 16 | The following constants and functions from the `Math.xxx` JavaScript 17 | scope are brought into scope within data accessor expressions 18 | (i.e. one can write "`sin(x)`" instead of "`Math.sin(x)`"): `E`, 19 | `LN10`, `LN2`, `LOG10E`, `LOG2E`, `PI`, `SQRT1_2`, `SQRT2`, `abs`, 20 | `acos`, `asin`, `atan`, `atan2`, `ceil`, `cos`, `exp`, `floor`, `log`, 21 | `pow`, `round`, `sin`, `sqrt`, `tan`. 22 | 23 |
24 | ## D3 functions 25 | 26 | The following functions from the `d3.xxx` JavaScript scope are brought 27 | into scope within data accessor expressions (i.e. one can write 28 | "`extent(x)`" instead of "`d3.extent(x)`"): `min`, `max`, `extent`, 29 | `sum`, `mean`, `median`, `quantile`, `zip`. (In fact, `extent` in 30 | Radian expressions is a variadic function: passing multiple arrays to 31 | `extent` will find the union of their ranges.) 32 | 33 |
34 | ## Extra functions 35 | 36 | `seq`, `seqStep`: Generate evenly spaced sequences of values: 37 | `seq(start, end, n)` produces a sequence of `n` values ranging from 38 | `start` to `end`, while `seqStep(start, end, delta)` produces a 39 | sequence from `start` to `end` in steps of `delta`. 40 | 41 | `sdev`: Calculate the sample standard deviation of an array. 42 | 43 | `unique`: Return the unique entries in an array in the order that they 44 | first appear. 45 | 46 | `flatten`: Flatten a multi-dimensional array into a one-dimensional 47 | array. 48 | 49 | `minBy`, `maxBy`, `sumBy`, `meanBy`, `sdevBy`, `quantileBy`, 50 | `firstBy`: Calculate categorical sums, means, standard deviations and 51 | quantiles of data sets (or extract first element with matching 52 | category): `sumBy(x, y)` calculates the sum of `x` values for each 53 | distinct value of `y`, returning an array of results in the order of 54 | occurrence of the distinct values in `y`. For example, given a 55 | dataset `d` containing daily temperature data with associated dates, 56 | `meanBy(d#temp, d#date#mon)` calculates a monthy seasonal cycle of 57 | temperatures. The `quantileBy` function is called as `quantileBy(x, 58 | y, p)` and calculates the `p`th quantile of the vector `x` segregated 59 | by distinct values of the parameter `y`. 60 | 61 | `normal`: Normal distribution function: `normal(x, mu, sigma)` gives 62 | the value of the normal PDF with mean `mu` and standard deviation 63 | `sigma` at ordinate `x`. 64 | 65 | `lognormal`: Log-normal distribution function: `lognormal(x, mu, 66 | sigma)` gives the value of the log-normal PDF with mean `mu` and 67 | standard deviation `sigma` at ordinate `x`. 68 | 69 | `gamma`: Gamma distribution function: `gamma(x, k, theta)` gives the 70 | value of the gamma PDF with shape parameter `k` and scale parameter 71 | `theta` at ordinate `x`. 72 | 73 | `invgamma`: Inverse gamma distribution function: `invgamma(x, alpha, 74 | beta)` gives the value of the inverse gamma PDF with shape parameter 75 | `alpha` and scale parameter `beta` at ordinate `x`. 76 | 77 |
78 | ## Histogramming 79 | 80 | The Radian plotting library also contains a `histogram` function for 81 | histogram binning calculations. This is called either as 82 | `histogram(xs, nbins)` with `nbins` an integer count of the number of 83 | bins to use, or as `histogram(xs, opts)` with `opts` an object with 84 | some of the following fields: 85 | 86 | * `transform`: either a string (one of `linear` or `log`) or a 87 | two-element array of functions giving forward and inverse coordinate 88 | transformations; if the `transform` argument is supplied, histogram 89 | binning is done in transformed coordinates, with bin centres and 90 | extents being transformed back to the original coordinate values 91 | before return. 92 | 93 | * `binrange`: data range over which bins are to be generated; if 94 | omitted, the binning range is calculated from the data; 95 | 96 | * `nbins`: number of histogram bins to use; 97 | 98 | * `binwidth`: width of histogram bins to use (in transformed 99 | coordinates); not used if `nbins` is supplied. 100 | 101 | The return value of the `histogram` function is an object with the 102 | following fields: 103 | 104 | * `centres`: histogram bin centres; 105 | 106 | * `bins`: array of two-element arrays giving the minimum and maximum 107 | bounds for each histogram bin (this is useful when using the 108 | `transform` argument to `histogram`, since, for nonlinear 109 | coordinate transformations, the histogram bins are no longer 110 | symmetric about their centres, and are no longer of a uniform 111 | size); 112 | 113 | * `counts`: integer counts of data items in each bin; 114 | 115 | * `freqs`: fraction of data items in each bin; 116 | 117 | * `probs`: probability of data items falling into each bin, defined 118 | so that the integral of the bar chart constructed using the 119 | coordinate ranges in `bins` and these values is unity. 120 | -------------------------------------------------------------------------------- /doc/ref-manual/A-reserved-names.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Reference manual - Appendix: reserved names 4 | --- 5 | 6 | # Appendix: Reserved names 7 | 8 |
9 | ## Directives 10 | 11 | The following directive names are reserved and implemented within 12 | Radian: ``, ``, ``, ``, ``, 13 | ``, ``, ``, ``, ``, 14 | ``, ``, ``. 15 | 16 |
17 | ## Attributes 18 | 19 | The following attributes names are reserved for use by Radian 20 | directives: `axis-x`, `axis-x-label`, `axis-x2`, `axis-y`, 21 | `axis-y-label`, `axis-y2`, `banded`, `clip-x`, `clip-y`, `cols`, 22 | `error-for`, `fill`, `fill-opacity`, `format`, `id`, `interp`, 23 | `label`, `legend-switches`, `marker`, `marker-size`, `name`, `range`, 24 | `range-x`, `range-y`, `rows`, `select-x`, `select-y`, `separator`, 25 | `src`, `stroke`, `stroke-opacity`, `stroke-switch`, `stroke-width`, 26 | `tabs`, `title`, `type`, `units`, `x`, `x2`, `y`, `y2`, `zoom-2d`, 27 | `zoom-x`, `zoom-y`. 28 | 29 | Any other attribute name applied to a plotting 30 | directive brings a name into scope for data access expression 31 | evaluation. 32 | -------------------------------------------------------------------------------- /doc/ref-manual/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Reference manual 4 | --- 5 | 6 | # Reference manual 7 | 8 |

Throughout the body of this manual, text in grey 9 | italics describes functionality that is not yet implemented.

10 | 11 | **While Radian is still in its early development phase, this reference 12 | manual describes the functionality implemented in the HEAD of the 13 | Radian GitHub repository. The releases on the Download page include 14 | a subset of this functionality. Once Radian is stable, we will tag 15 | sets of documentation for individual releases.** 16 | 17 | The **Radian** plotting library provides a convenient approach to 18 | embedding SVG plots in HTML documents. Plots are specified using 19 | custom HTML-like elements (e.g. ``, ``, ``, 20 | etc.) whose attributes and contents are used to control plot 21 | appearance and plot data. A flexible expression syntax is provided to 22 | make the access of compound JSON datasets simple, and to allow for 23 | grouping and simple processing of data for plotting. 24 | 25 | **Radian** works by combining the benefits of the AngularJS JavaScript 26 | framework with the data visualisation capabilities of the D3.js 27 | library. A Haskell combinator library is provided 28 | for easy server-side rendering of plots. 29 | 30 | ### [1. Data sets](01-data-sets.html) 31 | ### [2. Data accessor syntax](02-data-accessor-syntax.html) 32 | ### [3. Categorical data](03-categorical-data.html) 33 | ### [4. The main plotting directive](04-plot-directive.html) 34 | ### [5. Plot types](05-plot-types.html) 35 | ### [6. Palettes and interpolators](06-palettes-and-interpolators.html) 36 | ### [7. Plot legends](07-legends.html) 37 | ### [8. User interface features](08-user-interface-features.html) 38 | ### [9. Plot layout directives](09-plot-layout-directives.html) 39 | ### [10. The Radian plotting library](10-radian-plotting-library.html) 40 | ### [Appendix. Reserved names](A-reserved-names.html) 41 | 42 |
43 | ## Caveat 44 | 45 | Because of the way that browsers parse HTML pages, it is, in general, 46 | not possible to use XML's compact tag syntax `` for 47 | custom tags that are not part of the HTML standard even if these tags 48 | do not have any content. This means that all custom tags must be 49 | closed by an explicit close tag, even if there is no content within 50 | the tag. For example, `` tags must always be immediately 51 | closed by a ``. 52 | -------------------------------------------------------------------------------- /doc/roadmap.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Roadmap 4 | --- 5 | 6 | We have a big pile of stuff we want to do to Radian. To a large 7 | extent, what we (Ian and Tom) work on is driven by the needs of the 8 | [BayesHive](http://www.bayeshive.com) project, but we'll be trying to 9 | implement other features as we can. 10 | 11 | If you have features that you particularly need, let us know and we'll 12 | see what we can do about helping you out. (It you're really desperate 13 | for something, you can try offering to pay us. Depending on how much 14 | other stuff we have going on, that might work!) If you want to help 15 | develop any of these features, really do let us know. We'd be 16 | delighted to get some more people working on this stuff. (You can 17 | just push pull requests at us on GitHub if you like, but we're 18 | actively developing Radian, so it might be useful for you to know what 19 | we're working on and what we're not, so as to avoid duplicated 20 | effort.) 21 | 22 | ### Things we're going to do soon 23 | 24 | * Better management of axis formatting, ticks and so on: some of this 25 | is done, but it could be better. 26 | * Better support for categorical data, particularly for bar charts: I 27 | copped out on doing this when I first did bar charts, but it's been 28 | on my list for a while, and it's something that's used a lot in 29 | statistics. 30 | * Heatmaps, including hex-binning and categorical heatmaps: these are 31 | useful for all sorts of data, and hex-binned heatmaps are very 32 | nice. 33 | * More "bar type" plots, especially box plots and things of various 34 | "bar and whisker" flavours: we do statistics; statisticians love 35 | this stuff. 36 | * Real legend management: at the moment, legends in Radian are far 37 | from legendary. 38 | * Optimisation: Radian isn't very efficient. I've been concentrating 39 | on making it work before making it fast. There are a number of 40 | places where things could be cached, pre-computed or just sped up. 41 | 42 | ### Bigger jobs we want to do as soon as we can 43 | 44 | * Reflective styling UI: this is a little complicated to explain, but 45 | the basic idea is that there will be a UI that you can enable for 46 | each Radian plot that allows you to directly manipulate the styling 47 | of the plot (changing colours, fonts, axis types, whatever); the 48 | "reflective" part is that those changes will be advertised as some 49 | sort of Angular events, so that if you want to, you can persist the 50 | changes back to a server. We're embedding Radian plots in literate 51 | documents built from a statistical modelling language, and we want 52 | people to be able to produce quick plots without caring about the 53 | styling, then manipulate the styling via this UI and have the 54 | changes they make reflected in the code that's used to generate the 55 | plots. Not a small job, but could be super cool. 56 | * Contour plots: useful for all sorts of 2.5-D and 3-D data. 57 | * Kernel density estimation for 1-D and 2-D data: this is important 58 | to us for plotting credible regions on empirical probability 59 | density functions, but it's useful for a lot of other things too. 60 | 61 | ### Big jobs that we'd like to do, but don't know when 62 | 63 | * WebGL backend: this could potentially help a lot with speeding up 64 | handling of interactive plots, but it's quite a bit of work, 65 | particularly since Radian relies on D3.js to do much of the heavy 66 | lifting of plot generation, and we'd have to reimplement all that 67 | stuff ourselves to drive a WebGL backend. Could be worth it 68 | though. 69 | * Maps: we want to be able to say "``" instead of "``" and 70 | have a Leaflet map that we can drop Radian plots onto. Not 71 | super-hard, but quite a bit of work, and not something we'll get 72 | around to until we're dealing with spatial statistics in BayesHive. 73 | 74 | -------------------------------------------------------------------------------- /doc/templates/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Radian - $title$ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 31 | 32 | $body$ 33 | 34 |
35 |
36 |   37 | Copyright © (2013) OpenBrain 38 | Ltd.   39 |
40 |
41 |
42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /doc/templates/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |

$title$

6 | 7 | $date$ 8 | 9 |

$body$

10 | -------------------------------------------------------------------------------- /doc/tmp/about.rst: -------------------------------------------------------------------------------- 1 | --- 2 | title: About 3 | --- 4 | Nullam imperdiet sodales orci vitae molestie. Nunc quam orci, pharetra a 5 | rhoncus vitae, eleifend id felis. Suspendisse potenti. Etiam vitae urna orci. 6 | Quisque pellentesque dignissim felis, egestas tempus urna luctus vitae. In hac 7 | habitasse platea dictumst. Morbi fringilla mattis odio, et mattis tellus 8 | accumsan vitae. 9 | 10 | 1. Amamus Unicode 碁 11 | 2. Interdum nex magna. 12 | 13 | Vivamus eget mauris sit amet nulla laoreet lobortis. Nulla in diam elementum 14 | risus convallis commodo. Cras vehicula varius dui vitae facilisis. Proin 15 | elementum libero eget leo aliquet quis euismod orci vestibulum. Duis rhoncus 16 | lorem consequat tellus vestibulum aliquam. Quisque orci orci, malesuada porta 17 | blandit et, interdum nec magna. 18 | -------------------------------------------------------------------------------- /doc/tmp/contact.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Contact 3 | --- 4 | 5 | I live in a small hut in the mountains of Kumano Kodō on Kii Hantō and would not 6 | like to be contacted. 7 | -------------------------------------------------------------------------------- /doc/tmp/css/default.css: -------------------------------------------------------------------------------- 1 | body { 2 | color: black; 3 | font-size: 16px; 4 | margin: 0px auto 0px auto; 5 | width: 600px; 6 | } 7 | 8 | div#header { 9 | border-bottom: 2px solid black; 10 | margin-bottom: 30px; 11 | padding: 12px 0px 12px 0px; 12 | } 13 | 14 | div#logo a { 15 | color: black; 16 | float: left; 17 | font-size: 18px; 18 | font-weight: bold; 19 | text-decoration: none; 20 | } 21 | 22 | div#header #navigation { 23 | text-align: right; 24 | } 25 | 26 | div#header #navigation a { 27 | color: black; 28 | font-size: 18px; 29 | font-weight: bold; 30 | margin-left: 12px; 31 | text-decoration: none; 32 | text-transform: uppercase; 33 | } 34 | 35 | div#footer { 36 | border-top: solid 2px black; 37 | color: #555; 38 | font-size: 12px; 39 | margin-top: 30px; 40 | padding: 12px 0px 12px 0px; 41 | text-align: right; 42 | } 43 | 44 | h1 { 45 | font-size: 24px; 46 | } 47 | 48 | h2 { 49 | font-size: 20px; 50 | } 51 | 52 | div.info { 53 | color: #555; 54 | font-size: 14px; 55 | font-style: italic; 56 | } 57 | -------------------------------------------------------------------------------- /doc/tmp/images/haskell-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/doc/tmp/images/haskell-logo.png -------------------------------------------------------------------------------- /doc/tmp/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Home 3 | --- 4 | 5 |

Welcome

6 | 7 | 8 | 9 |

Welcome to my blog!

10 | 11 |

I've reproduced a list of recent posts here for your reading pleasure:

12 | 13 |

Posts

14 | $partial("templates/post-list.html")$ 15 | 16 |

…or you can find more in the archives. 17 | -------------------------------------------------------------------------------- /doc/tmp/posts/2012-08-12-spqr.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: S.P.Q.R. 3 | --- 4 | 5 | Mauris in lorem nisl. Maecenas tempus facilisis ante, eget viverra nisl 6 | tincidunt et. Donec turpis lectus, mattis ac malesuada a, accumsan eu libero. 7 | Morbi condimentum, tortor et tincidunt ullamcorper, sem quam pretium nulla, id 8 | convallis lectus libero nec turpis. Proin dapibus nisi id est sodales nec 9 | ultrices tortor pellentesque. Vivamus vel nisi ac lacus sollicitudin vulputate 10 | ac ut ligula. Nullam feugiat risus eget eros gravida in molestie sapien euismod. 11 | Nunc sed hendrerit orci. Nulla mollis consequat lorem ac blandit. Ut et turpis 12 | mauris. Nulla est odio, posuere id ullamcorper sit amet, tincidunt vel justo. 13 | Curabitur placerat tincidunt varius. Nulla vulputate, ipsum eu consectetur 14 | mollis, dui nibh aliquam neque, at ultricies leo ligula et arcu. Proin et mi 15 | eget tellus sodales lobortis. Sed tempor, urna vel pulvinar faucibus, lectus 16 | urna vehicula ante, at facilisis dolor odio at lorem. Morbi vehicula euismod 17 | urna, et imperdiet urna ornare vitae. 18 | 19 | Sed tincidunt sollicitudin ultrices. In hac habitasse platea dictumst. Morbi 20 | ligula lectus, egestas at ultricies nec, fringilla et tellus. Duis urna lorem, 21 | bibendum a ornare sed, euismod sed nunc. Aliquam tempor massa at velit fringilla 22 | fringilla. Praesent sit amet tempor felis. Maecenas id felis ac velit aliquam 23 | tempor a sit amet orci. Nunc placerat nulla pellentesque sem commodo cursus. 24 | Praesent quis sapien orci, quis ultricies augue. Nam vestibulum sem non augue 25 | semper tincidunt pellentesque ipsum volutpat. Duis congue, nunc a aliquam 26 | luctus, quam ante convallis nisi, ac pellentesque lacus orci vel turpis. Cum 27 | sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus 28 | mus. Suspendisse hendrerit nisl eu felis sagittis faucibus. Nunc eu congue 29 | lorem. Quisque non nibh nisi, et ultrices massa. Sed vitae erat vitae nulla 30 | pellentesque fermentum. 31 | 32 | Ut diam nunc, consectetur ut ultrices eu, iaculis sed felis. Sed lacinia, odio 33 | et accumsan luctus, arcu ipsum accumsan erat, sit amet malesuada libero lacus et 34 | velit. Donec accumsan tristique tristique. Proin a metus magna, vitae mattis 35 | nisl. Integer a libero ipsum. Mauris faucibus eleifend metus id sodales. Morbi 36 | ornare, nibh nec facilisis imperdiet, turpis sem commodo lorem, id commodo 37 | mauris metus vitae justo. Etiam at pellentesque tortor. Proin mollis accumsan 38 | ligula, nec tempus augue auctor quis. Nulla lacinia, mi quis lobortis auctor, 39 | nisi diam posuere dui, pulvinar feugiat dui libero eget quam. Fusce eu risus 40 | nunc, a consectetur orci. Class aptent taciti sociosqu ad litora torquent per 41 | conubia nostra, per inceptos himenaeos. Maecenas venenatis aliquet orci, a 42 | ultricies sem facilisis eu. Donec dolor purus, porta condimentum convallis nec, 43 | dignissim nec libero. 44 | 45 | Etiam rutrum ultricies dui, et interdum metus elementum et. Nulla sapien nunc, 46 | interdum tristique porttitor in, laoreet vitae mi. Ut vehicula auctor mauris sit 47 | amet bibendum. Phasellus adipiscing mattis libero, eget adipiscing erat 48 | dignissim at. Vivamus convallis malesuada metus nec cursus. Ut cursus, lorem 49 | eleifend sollicitudin condimentum, felis tortor sodales augue, ac tempus lacus 50 | ipsum vitae quam. Vestibulum vitae lacus non tortor vehicula iaculis faucibus 51 | quis massa. 52 | 53 | Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus 54 | mus. Duis malesuada neque nec ante porttitor accumsan. Suspendisse potenti. 55 | Aliquam in lacus magna, imperdiet laoreet lectus. Praesent id diam nec ante 56 | commodo rhoncus nec vel augue. Pellentesque tortor massa, dignissim ut sagittis 57 | sed, hendrerit vitae nunc. Nam gravida, urna vitae hendrerit rutrum, felis augue 58 | vulputate tortor, ut varius velit libero nec lectus. In adipiscing massa in est 59 | scelerisque ullamcorper. Vivamus in nisi metus. 60 | -------------------------------------------------------------------------------- /doc/tmp/posts/2012-10-07-rosa-rosa-rosam.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Rosa Rosa Rosam 3 | author: Ovidius 4 | --- 5 | 6 | Suspendisse pharetra ullamcorper sem et auctor. Suspendisse vitae tellus eu 7 | turpis dignissim gravida ut ut tortor. Cum sociis natoque penatibus et magnis 8 | dis parturient montes, nascetur ridiculus mus. Morbi aliquam sapien quis nisl 9 | sodales non aliquet nisl iaculis. Curabitur fermentum orci vel sapien 10 | pellentesque id condimentum metus vehicula. Curabitur turpis purus, scelerisque 11 | at interdum quis, placerat sit amet tortor. Aliquam erat volutpat. 12 | 13 | Integer posuere felis non arcu suscipit ullamcorper. Nam tempus risus venenatis 14 | orci sagittis eu aliquam ante tincidunt. Aenean vehicula ipsum id sapien 15 | tincidunt commodo. Aliquam erat volutpat. Curabitur vehicula libero ac turpis 16 | cursus consectetur. Praesent posuere egestas purus et dapibus. Mauris egestas, 17 | lectus vitae scelerisque ultricies, metus lorem tempor nisi, sed vehicula tortor 18 | mauris nec urna. Quisque urna tellus, facilisis at mollis eget, adipiscing in 19 | nisl. Proin quam arcu, euismod et imperdiet sed, ultricies sed orci. 20 | 21 | Nulla malesuada sem eget lectus scelerisque nec rhoncus metus interdum. In dui 22 | felis, rhoncus id scelerisque eget, vulputate id sem. Nulla facilisi. Vestibulum 23 | eleifend, metus dignissim lacinia ornare, magna nulla vehicula nisi, sed 24 | molestie mauris ipsum vel turpis. Class aptent taciti sociosqu ad litora 25 | torquent per conubia nostra, per inceptos himenaeos. Nulla urna leo, vehicula 26 | eget dignissim a, hendrerit ut risus. Fusce ultricies elementum placerat. Nam at 27 | dolor sed nisi mollis sollicitudin vitae at urna. Vestibulum iaculis adipiscing 28 | eros et mollis. 29 | 30 | Phasellus ultricies elit eu risus sagittis eu dictum ante ultrices. Nulla 31 | congue, augue ac placerat tempor, orci mi luctus nisi, at varius ipsum sem sed 32 | eros. Vivamus eget velit eget felis posuere ornare. In sed metus non est iaculis 33 | facilisis dapibus sit amet enim. Aliquam viverra tortor eget neque volutpat in 34 | auctor urna rutrum. Aliquam ligula augue, congue sit amet rutrum in, semper vel 35 | nulla. Sed tempus porttitor faucibus. Donec cursus sodales nulla, quis lacinia 36 | mi vehicula vel. Sed nec purus orci. Nam leo sapien, rutrum a ultrices quis, 37 | placerat vel ligula. Donec massa quam, pellentesque et molestie nec, hendrerit 38 | id mauris. In hac habitasse platea dictumst. Cras quis quam sem. Curabitur in 39 | arcu diam, in interdum mauris. 40 | 41 | Proin lorem sapien, iaculis et faucibus nec, dictum sed nunc. Pellentesque in 42 | purus justo. Vestibulum facilisis rutrum nisi, a egestas nunc suscipit sed. Ut 43 | quis tortor a arcu bibendum placerat non sed ante. Praesent orci sem, posuere 44 | sit amet cursus molestie, volutpat ut purus. Curabitur aliquam, purus in 45 | pharetra viverra, lorem leo aliquam tellus, vel consequat felis neque et mauris. 46 | Aliquam erat volutpat. 47 | -------------------------------------------------------------------------------- /doc/tmp/posts/2012-11-28-carpe-diem.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Carpe Diem 3 | --- 4 | 5 | Fusce tortor quam, egestas in posuere quis, porttitor vel turpis. Donec 6 | vulputate porttitor augue at rhoncus. Proin iaculis consectetur sagittis. 7 | Curabitur venenatis turpis sit amet purus tristique nec posuere risus laoreet. 8 | Nullam nisi sem, dapibus id semper id, egestas vel arcu. Morbi porttitor ipsum 9 | placerat erat consequat sed consequat purus feugiat. Donec auctor elit ut risus 10 | mattis facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 11 | 12 | Proin vulputate sapien facilisis leo ornare pulvinar. Fusce tempus massa a risus 13 | semper iaculis. Suspendisse sollicitudin posuere nunc, sit amet rutrum leo 14 | facilisis mattis. Sed ornare auctor dui, vitae rutrum neque auctor sit amet. 15 | Proin ac dui magna. Mauris vehicula interdum augue, nec ultrices libero egestas 16 | quis. Nunc convallis euismod ipsum, id sollicitudin orci consequat ac. Fusce 17 | bibendum congue libero, in rutrum nulla congue non. Cras sit amet risus tortor, 18 | eu pellentesque dui. Phasellus euismod enim non nibh sodales quis consectetur 19 | lorem laoreet. Vivamus a egestas quam. Curabitur in tortor augue, vitae varius 20 | tellus. Integer varius, elit ac gravida suscipit, eros erat pellentesque nisi, 21 | et tristique augue odio id nulla. Aliquam sit amet nunc vel tellus hendrerit 22 | tempus ac vel sem. 23 | 24 | Aenean tincidunt sollicitudin sapien ut porttitor. Curabitur molestie adipiscing 25 | lorem vel scelerisque. Donec vitae interdum est. Proin rutrum vulputate 26 | faucibus. Suspendisse sit amet felis odio, non volutpat ante. Sed eu lectus 27 | quam. Curabitur tristique rhoncus est, vel commodo tortor suscipit semper. 28 | Maecenas feugiat vestibulum nisi id facilisis. Nulla non tincidunt libero. 29 | Praesent ultrices interdum commodo. Sed euismod nisl auctor leo ultrices rutrum. 30 | Aliquam nibh felis, congue molestie blandit at, bibendum at eros. Aenean 31 | tincidunt, tortor iaculis placerat sollicitudin, lorem justo tempor diam, et 32 | posuere sapien leo et magna. Quisque vel aliquam mauris. 33 | 34 | Proin varius tempus fermentum. Cum sociis natoque penatibus et magnis dis 35 | parturient montes, nascetur ridiculus mus. Sed tincidunt nunc id magna 36 | adipiscing non sollicitudin turpis tempor. Etiam vel elit ipsum, quis euismod 37 | velit. Quisque elementum magna vitae quam venenatis lacinia. Sed at arcu ipsum. 38 | Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos 39 | himenaeos. Donec ut lorem ac sapien cursus lacinia sit amet mollis dolor. 40 | Vivamus tempus odio nec magna faucibus sed hendrerit lorem tempor. 41 | 42 | Vestibulum eu nisi arcu. Curabitur nisi risus, fermentum ut lacinia ut, interdum 43 | nec magna. Nunc aliquet gravida massa, eu aliquam lorem faucibus at. Sed 44 | sollicitudin volutpat velit id tempor. In nibh justo, pharetra et pretium 45 | dignissim, tempus in turpis. Phasellus eget lobortis nisl. Phasellus sed 46 | fermentum diam. Nam tempus pharetra odio, quis congue eros imperdiet eu. Aliquam 47 | dui eros, hendrerit et vulputate vel, porta eu eros. Nullam nisi dui, commodo 48 | eget pharetra ut, ornare sit amet nunc. Fusce vel neque urna. Maecenas nulla 49 | ante, egestas at consequat quis, fermentum a enim. Aliquam id tristique urna. 50 | Integer augue justo, scelerisque et consectetur id, rhoncus eget enim. 51 | -------------------------------------------------------------------------------- /doc/tmp/posts/2012-12-07-tu-quoque.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tu Quoque 3 | author: Julius 4 | --- 5 | 6 | Vestibulum leo turpis, dignissim quis ultrices sit amet, iaculis ac ligula. 7 | Pellentesque tristique, velit eget scelerisque scelerisque, est dolor ultrices 8 | arcu, quis ullamcorper justo arcu luctus mauris. Integer congue molestie nisi id 9 | posuere. Fusce pellentesque gravida tempus. Integer viverra tortor nec eros 10 | mollis quis convallis sem laoreet. Nulla id libero ac erat varius laoreet. Proin 11 | sed est est. Curabitur lacinia fermentum lorem, elementum malesuada ipsum 12 | malesuada ut. Donec suscipit elit id leo vehicula mattis non sed leo. Morbi 13 | varius eleifend varius. Nulla vestibulum, neque vitae aliquam eleifend, nisi 14 | tellus placerat nunc, quis suscipit elit turpis eu tortor. Etiam euismod 15 | convallis lectus quis venenatis. Phasellus laoreet magna in nibh cursus eu 16 | egestas nulla convallis. Aliquam vel ullamcorper risus. Fusce dictum, massa id 17 | consequat viverra, nulla ante tristique est, a faucibus nisi enim nec dui. Donec 18 | metus ligula, condimentum at porttitor eget, lobortis at quam. 19 | 20 | Aenean vel libero in magna ultricies congue in a odio. Donec faucibus rutrum 21 | ornare. Fusce dictum eleifend fermentum. Vestibulum vel nibh a metus porttitor 22 | rhoncus. Pellentesque id quam neque, eget molestie arcu. Integer in elit vel 23 | neque viverra ultricies in eget massa. Nam ut convallis est. Pellentesque eros 24 | eros, sodales non vehicula et, tincidunt ut odio. Cras suscipit ultrices metus 25 | sit amet molestie. Fusce enim leo, vehicula sed sodales quis, adipiscing at 26 | ipsum. 27 | 28 | Nunc tempor dignissim enim, sed tincidunt eros bibendum quis. Curabitur et dolor 29 | augue, id laoreet mi. Nulla cursus felis id dui vehicula vitae ornare lorem 30 | blandit. Cras eget dui nec odio volutpat pharetra. Fusce hendrerit justo justo, 31 | vel imperdiet enim. Vivamus elit risus, interdum ultrices accumsan eleifend, 32 | vestibulum vitae sapien. Integer bibendum ullamcorper tristique. Nulla quis odio 33 | lectus, quis eleifend augue. Integer a ligula mauris. Aenean et tempus tortor. 34 | Quisque at tortor mi. Vivamus accumsan feugiat est a blandit. Sed vitae enim ut 35 | dolor semper sodales. Duis tristique, ante et placerat elementum, nulla tellus 36 | pellentesque sapien, quis posuere velit mi eget nulla. Sed vestibulum nunc non 37 | est porttitor ut rutrum nibh semper. Pellentesque habitant morbi tristique 38 | senectus et netus et malesuada fames ac turpis egestas. 39 | 40 | Nulla adipiscing ultricies lobortis. Vivamus iaculis nisl vitae tellus laoreet 41 | vitae aliquet lacus mollis. Phasellus ut lacus urna, sed sagittis ante. Etiam 42 | consectetur pretium nisl sed dignissim. Pellentesque convallis, nisl eget 43 | commodo mollis, sem magna consequat arcu, sed pretium ipsum arcu sit amet neque. 44 | Aliquam erat volutpat. Morbi sed mi sed urna vestibulum placerat vitae vel 45 | metus. Fusce ac ante at justo pharetra vehicula. Vivamus vel tortor eget augue 46 | aliquet aliquet at vel odio. Nunc venenatis, magna quis facilisis fringilla, 47 | augue tellus varius neque, in vulputate est eros ut tortor. Duis lorem neque, 48 | aliquam congue posuere id, condimentum non dui. Phasellus ut dui massa, 49 | porttitor suscipit augue. Praesent quis tellus quam, vel volutpat metus. Vivamus 50 | enim est, aliquam in imperdiet et, sagittis eu ligula. Vestibulum hendrerit 51 | placerat orci et aliquet. Cras pharetra, dolor placerat lobortis tempor, metus 52 | odio cursus ligula, et posuere lacus ligula quis dui. 53 | 54 | Donec a lectus eu nibh malesuada aliquam. Proin at metus quam, et tincidunt leo. 55 | Quisque lacus justo, scelerisque sodales pulvinar sed, dignissim ut sapien. 56 | Vivamus diam felis, adipiscing sollicitudin ultricies id, accumsan ac felis. In 57 | eu posuere ligula. Suspendisse potenti. Donec porttitor dictum dui id vehicula. 58 | Integer ante velit, congue id dictum et, adipiscing a tortor. 59 | -------------------------------------------------------------------------------- /doc/tmp/site.hs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- 2 | {-# LANGUAGE OverloadedStrings #-} 3 | import Data.Monoid (mappend) 4 | import Hakyll 5 | 6 | 7 | -------------------------------------------------------------------------------- 8 | main :: IO () 9 | main = hakyll $ do 10 | match "images/*" $ do 11 | route idRoute 12 | compile copyFileCompiler 13 | 14 | match "css/*" $ do 15 | route idRoute 16 | compile compressCssCompiler 17 | 18 | match (fromList ["about.rst", "contact.markdown"]) $ do 19 | route $ setExtension "html" 20 | compile $ pandocCompiler 21 | >>= loadAndApplyTemplate "templates/default.html" defaultContext 22 | >>= relativizeUrls 23 | 24 | match "posts/*" $ do 25 | route $ setExtension "html" 26 | compile $ pandocCompiler 27 | >>= loadAndApplyTemplate "templates/post.html" postCtx 28 | >>= loadAndApplyTemplate "templates/default.html" postCtx 29 | >>= relativizeUrls 30 | 31 | create ["archive.html"] $ do 32 | route idRoute 33 | compile $ do 34 | posts <- recentFirst =<< loadAll "posts/*" 35 | let archiveCtx = 36 | listField "posts" postCtx (return posts) `mappend` 37 | constField "title" "Archives" `mappend` 38 | defaultContext 39 | 40 | makeItem "" 41 | >>= loadAndApplyTemplate "templates/archive.html" archiveCtx 42 | >>= loadAndApplyTemplate "templates/default.html" archiveCtx 43 | >>= relativizeUrls 44 | 45 | 46 | match "index.html" $ do 47 | route idRoute 48 | compile $ do 49 | posts <- recentFirst =<< loadAll "posts/*" 50 | let indexCtx = 51 | listField "posts" postCtx (return posts) `mappend` 52 | constField "title" "Home" `mappend` 53 | defaultContext 54 | 55 | getResourceBody 56 | >>= applyAsTemplate indexCtx 57 | >>= loadAndApplyTemplate "templates/default.html" indexCtx 58 | >>= relativizeUrls 59 | 60 | match "templates/*" $ compile templateCompiler 61 | 62 | 63 | -------------------------------------------------------------------------------- 64 | postCtx :: Context String 65 | postCtx = 66 | dateField "date" "%B %e, %Y" `mappend` 67 | defaultContext 68 | -------------------------------------------------------------------------------- /doc/tmp/templates/archive.html: -------------------------------------------------------------------------------- 1 | Here you can find all my previous posts: 2 | $partial("templates/post-list.html")$ 3 | -------------------------------------------------------------------------------- /doc/tmp/templates/default.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | My Hakyll Blog - $title$ 8 | 9 | 10 | 11 |

22 | 23 |
24 |

$title$

25 | 26 | $body$ 27 |
28 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /doc/tmp/templates/post-list.html: -------------------------------------------------------------------------------- 1 |
    2 | $for(posts)$ 3 |
  • 4 | $title$ - $date$ 5 |
  • 6 | $endfor$ 7 |
8 | -------------------------------------------------------------------------------- /doc/tmp/templates/post.html: -------------------------------------------------------------------------------- 1 |
2 | Posted on $date$ 3 | $if(author)$ 4 | by $author$ 5 | $endif$ 6 |
7 | 8 | $body$ 9 | -------------------------------------------------------------------------------- /doc/tutorial/1-function-plots/1-4-basic-interaction.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 1.4. Basic interaction 4 | --- 5 | 6 | # 1.4. Basic interaction 7 | 8 | We have just one more ingredient to add before we can make the plot 9 | we're aiming at. That's some very simple interaction. We'll look at 10 | two of Radian's interaction features here, zooming and plot visibility 11 | switching. 12 | 13 |
14 | ## Zooming 15 | 16 | Sometimes we want to be able to zoom into detail on a plot. At the 17 | moment, Radian only supports zooming in the *x*-direction, but it's 18 | very easy to set up -- just add a `zoom-x` attribute to the `` 19 | directive. The result is a double plot, with a "focus" area above a 20 | "context" area. You can drag in the context area to select a region 21 | to view in the focus plot, and you can then drag that focussed area 22 | around or resize it. To go back to the full view, just click in the 23 | context view outside the focused region. For the `zoom-x` attribute, 24 | you can either supply a fraction of the vertical height of the plot to 25 | be used for the context area, or you can just let the fraction default 26 | to 0.2. 27 | 28 | 29 | 30 | ``` html 31 | 32 | 33 | 34 | ``` 35 | 36 | 37 | 38 | 39 | 40 |
41 | ## Visibility switching 42 | 43 | If we have multiple traces on the same plot, sometimes we may want to 44 | switch traces on and off to make it easier to see what's going on. To 45 | do this in Radian, add the `legend-switches` attribute to the `` 46 | directive, and provide a label for each switchable plot with a `label` 47 | attribute: 48 | 49 | 50 | 51 | ``` html 52 | 53 | 54 | 55 | 57 | 58 | ``` 59 | 60 | 61 | 62 | 63 | 65 | 66 | 67 | 68 |
69 | 70 | « Prev section 71 | 72 | 73 | Next section » 74 | 75 |
76 |
77 | -------------------------------------------------------------------------------- /doc/tutorial/1-function-plots/1-5-putting-it-together.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 1.5. Putting it together 4 | --- 5 | 6 | # 1.5. Putting it together 7 | 8 | We now know enough to make this plot: 9 | 10 |
11 |
12 | 15 | 16 | 17 | 18 |
19 | 20 | We'll do it step by step. Make a copy of the `template.html` file in 21 | the tutorial directory and give it a try yourself. 22 | 23 |
24 | #### 1. Plot setup 25 | 26 | First, we need to set up the `` directive. The plot is 300 27 | pixels tall and about twice as long as it is high. 28 | 29 |
30 | **Exercise** 31 | 32 | Set up the `` directive in your HTML file with the right 33 | dimensions. 34 | 35 |
36 |
37 | 38 | #### 2. Drawing the curves 39 | 40 | The *x* coordinate values run from 0 up to 10, and we can share those 41 | coordinate values between the two curves we want to plot. 42 | 43 |
44 | **Exercise** 45 | 46 | Add a suitable `x` attribute to the `` directive using the `seq` 47 | function. 48 | 49 |
50 |
51 | 52 | The equations of the two curves are *y = 30 - 3x* and *y = 12 - 3x + 53 | x2/2*. 54 | 55 |
56 | **Exercise** 57 | 58 | Add suitable `` directives inside the `` directive to 59 | plot these curves. 60 | 61 |
62 |
63 | At this point, it should be possible to render the plot. Give it a 64 | go. If it doesn't work, you can sometimes get some idea of what's 65 | wrong by looking in the JavaScript developer console in your browser 66 | (in Chrome, you switch this on and off with by pressing 67 | *Ctrl-Shift-J*). In particular, if you make a mistake in a Radian 68 | expression, you'll see error messages from a function called 69 | `radianEval`, the JavaScript function that processes Radian 70 | expressions. 71 | 72 |
73 | 74 | #### 3. Styling 75 | 76 | We need to make the lines thicker, and we need to set their colours. 77 | We also need to set the axis labels. 78 | 79 |
80 | **Exercise** 81 | 82 | 1. Make the stroke width for both lines 2 pixels, make the straight 83 | line blue and the parabola red. 84 | 85 | 2. Set the axis labels to "X" and "Y". 86 | 87 |
88 |
89 | 90 | One thing we've not talked about yet is control over plotting ranges. 91 | By default, Radian makes the coordinate ranges in the *x* and *y* 92 | directions large enough to contain all of your plot data, i.e. all the 93 | values you include in any `x` and `y` attributes in plot directives 94 | within a `` directive. Sometimes you want to be able to 95 | override these ranges, either to exclude some data or to position your 96 | plot more advantageously. Here, we'd like the *y* values to run from 97 | zero upwards. We can do this by adding a `range-y=0` attribute to the 98 | `` directive. 99 | 100 |
101 | **Exercise** 102 | 103 | Add a `range-y=0` attribute to your `` directive and look at 104 | what difference it makes to the plot. 105 | 106 |
107 |
108 | 109 | #### 4. Interaction 110 | 111 | The final aspect of the plot we need to deal with is the visibility 112 | switching of the curves. We can do this by adding a `legend-switches` 113 | attribute to the `` directive and adding `label` attributes to 114 | each of the `` directives to give labels for the curves. 115 | 116 |
117 | **Exercise** 118 | 119 | Set up the visibility switching for the curves in this plot. 120 | 121 |
122 | 123 |
124 | ## Conclusion 125 | 126 | You should have ended up with something like this: 127 | 128 | ``` html 129 | 132 | 133 | 134 | 135 | ``` 136 | 137 | This is about all you need to know to be able to produce simple plots 138 | of functions using Radian. In the next section, we'll go on to look 139 | at producing plots from data, and producing different types of plots 140 | (scatter plots, bar charts and so on). 141 | 142 |
143 | 144 | « Prev section 145 | 146 | 147 | Next section » 148 | 149 |
150 |
151 | -------------------------------------------------------------------------------- /doc/tutorial/1-function-plots/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 1. Function plots 4 | --- 5 | 6 | # 1. Function plots 7 | 8 | Here's the plot we're going to be working towards producing in this 9 | part of the tutorial: 10 | 11 |
12 |
13 | 16 | 17 | 18 | 19 |
20 | 21 | It's a plot with two curves (one a straight line, one a parabola) 22 | defined by functions *y = f(x)*. There is some simple styling (line 23 | width and colour) and a little bit of interactivity (you can click on 24 | the coloured blobs in the legend to toggle the visibility of the two 25 | curves). 26 | 27 | ### Setup 28 | 29 | Before we get started for real, you will need to set up the tutorial 30 | materials. These are 31 | [available on GitHub](https://github.com/openbrainsrc/Radian-tutorial). 32 | The easiest way to get the tutorial materials is to clone the GitHub 33 | repository. To do this, in a terminal window, do: 34 | 35 | ``` 36 | git clone git@github.com:openbrainsrc/Radian-tutorial.git 37 | ``` 38 | 39 | To serve the tutorial pages, you can either use a pre-existing web 40 | server, setting it up to serve the pages in the `Radian-tutorial` 41 | directory, or you can use the `web-server.js` script provided in the 42 | `Radian-tutorial` directory. This script uses Node.js, and is 43 | identical to the web server script provided with the Angular seed 44 | application. 45 | 46 | Once you have a suitable web server running, check that everything is 47 | working by pointing your browser at the `index.html` page in the 48 | `Radian-tutorial` directory. You should see some text saying "Content 49 | goes here!" and a rudimentary plot. 50 | 51 | ### Starting the tutorial 52 | 53 | Once page serving appears to be working, check out the first section 54 | of the tutorial by going to the `Radian-tutorial` directory in a 55 | terminal and doing: 56 | 57 | ``` 58 | git checkout -f part-1 59 | ``` 60 | 61 | We'll do something similar at the beginning of each part of the 62 | tutorial to get out the files needed for that part. *This command 63 | will delete any local changes you have made in the `Radian-tutorial` 64 | directory.* 65 | 66 | As well as the content for each tutorial section, the 67 | `Radian-tutorial` directory contains a `template.html` file that you 68 | can copy to create new pages -- this contains all the JavaScript setup 69 | required to be able to embed Radian plots in a page. 70 | 71 |
72 | 73 | Next section » 74 | 75 |
76 |
77 | -------------------------------------------------------------------------------- /doc/tutorial/2-data-plots/2-2-scatter-plots.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 2.2. Scatter plots 4 | --- 5 | 6 | # 2.2. Scatter plots 7 | 8 | So far, we have looked only at line plots. In this section, we branch 9 | out a bit and look at scatter plots. The Radian directives for all 10 | plot types work more or less the same way, so we'll be able to get 11 | going very quickly based on the knowledge acquired using the `` 12 | directive for line plots. 13 | 14 |
15 | ## The `` directive 16 | 17 | In Radian, scatter plots are generated using the `` 18 | directive. The coordinates of points to be plotted are specified 19 | using `x` and `y` attributes, as for the `` directive. The 20 | primary difference between using `` and `` is in the 21 | range of paint attributes that can be given for the markers displayed 22 | at each of the plot points. Markers have a shape and size, and can be 23 | filled and stroked (so have colours and opacities for both as well as 24 | a stroke width). 25 | 26 | 27 | 28 | ``` html 29 | 30 | 32 | 33 | 34 | 36 | 37 | 38 | 39 | 40 | 41 | ``` 42 | 43 | 44 | 46 | 47 | 48 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | Marker type is given using the `marker` attribute. Marker size is set 58 | by the `marker-size` attribute, which gives a measure of the *area* in 59 | square pixels of the marker. Colours are set with the `stroke` and 60 | `fill` attributes. 61 | 62 | As a more advanced example of what can be done, the following example 63 | assigns marker type and fill colour based on the discrete values of 64 | the `species` field in our data. This uses Radian *palettes*, a topic 65 | that we won't discuss much, but you can see more or less what to do 66 | (all the details are in the 67 | [reference manual](/ref-manual/03-palettes-and-interpolators.html)). 68 | 69 | 70 | 71 | ``` html 72 | 73 | 76 | 77 | 78 | 79 | "I. setosa" circle 80 | "I. versicolor" square 81 | "I. virginica" diamond 82 | 83 | 84 | 85 | "I. setosa" red 86 | "I. versicolor" green 87 | "I. virginica" blue 88 | 89 | 90 | 92 | 93 | 94 | 95 | 96 | 97 | ``` 98 | 99 | 100 | \"I. setosa\" circle; \"I. versicolor\" square; \"I. virginica\" diamond 101 | 102 | 103 | 104 | \"I. setosa\" red; \"I. versicolor\" green; \"I. virginica\" blue 105 | 106 | 107 | 108 | 111 | 112 | 113 | 114 |
115 |
116 | **Exercise** 117 | 118 | Generate some more scatter plots using the `iris.csv` data set. 119 | Experiment with marker type, size and stroke and fill attributes. You 120 | can try playing with palettes for colours and marker type following 121 | Example 7 above. 122 | 123 |
124 | 125 | 126 |
127 | 128 | « Prev section 129 | 130 | 131 | Next section » 132 | 133 |
134 |
135 | -------------------------------------------------------------------------------- /doc/tutorial/2-data-plots/2-4-plot-layout.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 2.4. Plot layout 4 | --- 5 | 6 | # 2.4. Plot layout 7 | 8 | It's very common to want to produce multi-panel plots, with views of 9 | different data (or different views of the same data) lined up together 10 | for comparison. Radian contains three layout directives to allow us 11 | to do this sort of thing. 12 | 13 |
14 | ## Tree layout 15 | 16 | Radian plot layout uses the ``, `` and 17 | `` directives, plus an extra attribute called 18 | `layout-share` that can be applied to plot elements within these 19 | directives. (In fact, `` is just a special case of uses of 20 | `` and `` provided for convenience.) 21 | 22 | As you might expect from the names, `` lays things out in a 23 | row, `` in a column and `` in a grid. The 24 | important feature of these directives is that they can each contain 25 | either `` directives (defining single plots) or other layout 26 | directives. You can thus define a "layout tree" to arrange plots in a 27 | very flexible way (this sort of layout is sometimes called VBox/HBox 28 | layout). 29 | 30 | Here's a quick example to show how this works: 31 | 32 | 33 | 34 | ``` html 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ``` 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | This plot has a column of three small plots next to a single large 72 | plot. Note how the plot size is defined on the outermost plot layout 73 | directive. This outermost directive manages the allocation of space 74 | to all the inner layout directives and plots. You can also see how 75 | the `layout-share` attribute is used to control the relative amounts 76 | of space allocated to the elements contained in the outermost 77 | `` directive: the widths of the `` and the large 78 | `` are in the ratio 1:3, as specified by their `layout-share` 79 | values. You can also see how attributes are propagated down through 80 | the tree of directives -- we specify *x* values on the outermost 81 | `` directive and these are used by all the inner plots. 82 | 83 | The different plot elements within this type of layout tree are all 84 | rendered independently once their sizes and locations within the 85 | containing SVG image are determined -- no matter how many layers of 86 | `` and `` you use, the plots are all rendered into 87 | a single SVG image. 88 | 89 |
90 | ## Grid layout 91 | 92 | As well as `` and ``, which allow the construction 93 | of arbitrary hierarchical layouts, the `` directive 94 | performs simple grid-based layout -- specify the number of rows and 95 | columns you want (using the `rows` and `cols` attributes), put a 96 | suitable number of `` directives inside the `` 97 | directive, and the plots will be laid out in rows in the order you 98 | give them: 99 | 100 | 101 | 102 | ``` html 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | ``` 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 |
136 |
137 | 138 | « Prev section 139 | 140 | 141 | Next section » 142 | 143 |
144 |
145 | -------------------------------------------------------------------------------- /doc/tutorial/2-data-plots/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 2. Data plots 4 | --- 5 | 6 | # 2. Data plots 7 | 8 | Here's the plot we're going to be working towards producing in this 9 | part of the tutorial: 10 | 11 |
12 |
13 | 14 | 15 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | The left hand plot shows a daily time series of temperature and 35 | monthly aggregate rainfall (calculated from a daily time series) from 36 | a weather station in Victoria, Canada (data available 37 | [here](http://www.victoriaweather.ca/)) while the right hand panel 38 | shows a scatter plot of daily rainfall versus temperature from the 39 | same data. 40 | 41 | ### Setup 42 | 43 | As for Part 1, we need to check out the appropriate contents in the 44 | `Radian-tutorial` directory. *Remember that the following command 45 | will delete any local changes you have made in the `Radian-tutorial` 46 | directory, so if you have example plots from Part 1 you want to keep, 47 | copy them somewhere else.* To switch to the tutorial contents for 48 | Part 2, do the following in the `Radian-tutorial` directory: 49 | 50 | ``` 51 | git checkout -f part-2 52 | ``` 53 | 54 |
55 | 56 | « Prev section 57 | 58 | 59 | Next section » 60 | 61 |
62 |
63 | -------------------------------------------------------------------------------- /doc/tutorial/3-interactive-plots/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial -- 3. Interactive plots 4 | --- 5 | 6 | # 3. Interactive plots 7 | 8 | In this section, we're going to explore a few of the possibilities 9 | offered by Radian's integration with the AngularJS framework. This 10 | section of the tutorial is necessarily going to be a little more 11 | technical than the previous two -- there are a lot of things you can 12 | do with only a minimal amount of extra work, but we also want to 13 | demonstrate some slightly more complicated things, things that will 14 | require us to write a little bit of JavaScript code. However, even 15 | though we'll end up with some more complex stuff, most of the examples 16 | we're going to look at will be things that you can easily take and 17 | modify for your own purposes, without needing to know lots of 18 | JavaScript to do it. 19 | 20 | The plot that we're going to be working towards producing in this part 21 | of the tutorial is a little interactive stock price viewer. Below, 22 | you can select stocks from the menu, click "Add" to add them to the 23 | graph view (which appears once you've selected a stock), and you can 24 | then select the variable you want to view from the second drop-down 25 | list, control the visibility of different traces using the legend 26 | (which only appears when you have two or more stocks plotted), pan and 27 | zoom using the context panel below the main plot, and remove stock 28 | traces using the buttons that appear below the plot[^1]. 29 | 30 | This example requires some features of Radian that we've not yet 31 | covered, and it also requires about 10 lines of extra JavaScript to 32 | set some things up. 33 | 34 |
35 |
36 |
37 | 38 | 40 | 44 |        45 | 46 | 48 |
49 | 50 | 53 | 56 | 57 | 58 | 61 | 62 | 63 | 64 |
65 | 66 | 69 | {{s}}    70 | 71 |
72 |
73 | 74 | 75 | ### Setup 76 | 77 | As for Parts 1 and 2, we need to check out the appropriate contents in 78 | the `Radian-tutorial` directory. *Remember that the following command 79 | will delete any local changes you have made in the `Radian-tutorial` 80 | directory, so if you have example plots from Part 1 or 2 you want to 81 | keep, copy them somewhere else.* To switch to the tutorial contents 82 | for Part 3, do the following in the `Radian-tutorial` directory: 83 | 84 | ``` 85 | git checkout -f part-3 86 | ``` 87 | 88 |
89 | 90 | « Prev section 91 | 92 | 93 | Next section » 94 | 95 |
96 |
97 | 98 | [^1]: Note that the prices shown here are just some canned data 99 | downloaded from Yahoo Finance. In order to have live prices, 100 | we'd need to deal with cross-domain request issues: as a 101 | security measure, a piece of JavaScript served from, for 102 | example, the `http://openbrainsrc.github.io` domain, isn't 103 | allowed to make HTTP requests to other domains 104 | (e.g. `http://ichart.finance.yahoo.com`). It's an easy problem 105 | to fix if you're writing a real web application -- you just 106 | provide a proxy service from a server in your domain to make the 107 | requests for you -- but it's not something we want to deal with 108 | here, so canned data it is. 109 | -------------------------------------------------------------------------------- /doc/tutorial/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Radian Tutorial 4 | --- 5 | 6 | # Tutorial 7 | 8 | This tutorial covers many of the more straightforward uses of Radian. 9 | Each of the three sections works towards producing increasingly 10 | complex plots, with a number of sections describing the features of 11 | Radian that we're going to use (often with some scattered exercises 12 | for you to look at), wrapped up by a "Putting it together" section 13 | where you will be guided through constructing a plot using a number of 14 | Radian's features. 15 | 16 | Radian is very much an open-ended tool, and what you can do with it is 17 | really limited only by your imagination. We'll cover only a small 18 | fraction of what you can do in this tutorial, but it should be enough 19 | to get you started. 20 | 21 | ## [1. Function plots](1-function-plots) 22 | 23 | Uses simple function-based plots to introduce Radian: covers plot 24 | setup, line plots, Radian expressions and basic plot styling. 25 | 26 | ###### [1.1. Plot setup](1-function-plots/1-1-plot-setup.html) 27 | ###### [1.2. Line plots](1-function-plots/1-2-line-plots.html) 28 | ###### [1.3. Radian expressions](1-function-plots/1-3-radian-expressions.html) 29 | ###### [1.4. Basic interaction](1-function-plots/1-4-basic-interaction.html) 30 | ###### [1.5. Putting it together](1-function-plots/1-5-putting-it-together.html) 31 | 32 | ## [2. Data plots](2-data-plots) 33 | 34 | Plots using data: covers data access, scatter plots, bar charts and 35 | histograms, more complex Radian expressions and plot layout. 36 | 37 | ###### [2.1. Accessing plot data](2-data-plots/2-1-accessing-plot-data.html) 38 | ###### [2.2. Scatter plots](2-data-plots/2-2-scatter-plots.html) 39 | ###### [2.3. Bar charts](2-data-plots/2-3-bar-charts.html) 40 | ###### [2.4. Plot layout](2-data-plots/2-4-plot-layout.html) 41 | ###### [2.5. Putting it together](2-data-plots/2-5-putting-it-together.html) 42 | 43 | ## [3. Interactive plots](3-interactive-plots) 44 | 45 | Interactivity using Angular: builds a simple data viewer for some 46 | historical financial data. 47 | 48 | ###### [3.1. Angular data binding](3-interactive-plots/3-1-data-binding.html) 49 | ###### [3.2. Building the example](3-interactive-plots/3-2-building-the-example.html) 50 | -------------------------------------------------------------------------------- /examples/css/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/examples/css/.gitignore -------------------------------------------------------------------------------- /examples/css/app.css: -------------------------------------------------------------------------------- 1 | /* app css stylesheet */ 2 | 3 | .menu { 4 | list-style: none; 5 | border-bottom: 0.1em solid black; 6 | margin-bottom: 2em; 7 | padding: 0 0 0.5em; 8 | } 9 | 10 | .menu:before { 11 | content: "["; 12 | } 13 | 14 | .menu:after { 15 | content: "]"; 16 | } 17 | 18 | .menu > li { 19 | display: inline; 20 | } 21 | 22 | .menu > li:before { 23 | content: "|"; 24 | padding-right: 0.3em; 25 | } 26 | 27 | .menu > li:nth-child(1):before { 28 | content: ""; 29 | padding: 0; 30 | } 31 | 32 | plot { height: 300px; width: 500px; } 33 | 34 | pre.include-source { background: ghostwhite; margin-top: 20px; } 35 | -------------------------------------------------------------------------------- /examples/css/hljs.css: -------------------------------------------------------------------------------- 1 | pre code{display:block;padding:.5em;color:black;background:ghostwhite}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .lisp .title,pre .subst,pre .request,pre .status{color:black;font-weight:bold}pre .number,pre .hexcolor{color:#40a070}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .label,pre .vhdl .literal,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:navy;font-weight:normal}pre .attribute,pre .variable,pre .instancevar,pre .lisp .body{color:teal}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .ruby .symbol .keyword,pre .ruby .symbol .keymethods,pre .lisp .keyword,pre .tex .special,pre .input_number{color:#990073}pre .builtin,pre .built_in,pre .lisp .title{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}pre .tex .formula{opacity:.5} -------------------------------------------------------------------------------- /examples/data/mockJSON.json: -------------------------------------------------------------------------------- 1 | { 2 | "fathers" : [ 3 | { 4 | "id" : 0, 5 | "married" : 20, 6 | "name" : "George Lopez", 7 | "sons" : null, 8 | "daughters" : [ 9 | { 10 | "age" : 26, 11 | "name" : "Kimberly" 12 | } 13 | ] 14 | }, 15 | { 16 | "id" : 1, 17 | "married" : 15, 18 | "name" : "Anthony Davis", 19 | "sons" : null, 20 | "daughters" : [ 21 | { 22 | "age" : 26, 23 | "name" : "Angela" 24 | } 25 | ] 26 | }, 27 | { 28 | "id" : 2, 29 | "married" : 17, 30 | "name" : "Anthony Perez", 31 | "sons" : null, 32 | "daughters" : [ 33 | { 34 | "age" : 26, 35 | "name" : "Angela" 36 | } 37 | ] 38 | }, 39 | { 40 | "id" : 3, 41 | "married" : 30, 42 | "name" : "Anthony Clark", 43 | "sons" : null, 44 | "daughters" : [ 45 | { 46 | "age" : 3, 47 | "name" : "Betty" 48 | } 49 | ] 50 | }, 51 | { 52 | "id" : 4, 53 | "married" : 40, 54 | "name" : "Scott Smith", 55 | "sons" : null, 56 | "daughters" : [ 57 | { 58 | "age" : 29, 59 | "name" : "Linda" 60 | } 61 | ] 62 | } 63 | ] 64 | } -------------------------------------------------------------------------------- /examples/eg/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/examples/eg/.gitignore -------------------------------------------------------------------------------- /examples/eg/12.html: -------------------------------------------------------------------------------- 1 |

Example 12 (functional plots)

2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /examples/eg/13.html: -------------------------------------------------------------------------------- 1 |

Example 13 (functional plots)

2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /examples/eg/14.html: -------------------------------------------------------------------------------- 1 |

Example 14 (functional plots, exponentiation operator, expression 2 | vectorisation)

3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /examples/eg/15.html: -------------------------------------------------------------------------------- 1 |

Example 15 (data binding)

2 | 3 |
4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/eg/16.html: -------------------------------------------------------------------------------- 1 |

Example 16 (<plot-options> directive)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/eg/19.html: -------------------------------------------------------------------------------- 1 |

Example 19 (log axes)

2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/eg/21.html: -------------------------------------------------------------------------------- 1 |

Example 21 (bar chart)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 1, 2 9 | 2, 4 10 | 3, 8 11 | 4, 16 12 | 5, 32 13 | 6, 48 14 | 7, 24 15 | 8, 12 16 | 9, 6 17 | 10, 3 18 | 19 | -------------------------------------------------------------------------------- /examples/eg/22.html: -------------------------------------------------------------------------------- 1 |

Example 22 (test)

2 | 3 | [ 4 | {"x": 0,"y":0.0821196},{"x": 1,"y":0.0802639},{"x": 2,"y":0.0797536},{"x": 3,"y":0.0791291},{"x": 4,"y":0.0826573},{"x": 5,"y":0.0919378},{"x": 6,"y":0.0818375},{"x": 7,"y":0.0810162} 5 | 6 | 7 | ] 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/eg/24.html: -------------------------------------------------------------------------------- 1 |

Tom's data example

2 | 3 | [ 4 | [{"x": 35.1,"y":0.31269841999999937},{"x": 1.5,"y":-0.8704986999999997},{"x": 35.2,"y":-0.8962801600000008},{"x": 4.5,"y":-0.13985609999999982},{"x": 10.1,"y":0.15734341999999968},{"x": 80.4,"y":-0.9545983200000006},{"x": 5.2,"y":-0.10270615999999988},{"x": 60.1,"y":-0.13194657999999926},{"x": 70.1,"y":-0.029804579999998637},{"x": 40.6,"y":0.5188765200000001}],[{"x": 35.1,"y":1.1580576999999996},{"x": 1.5,"y":0.34739050000000016},{"x": 35.2,"y":-0.0520296000000009},{"x": 4.5,"y":1.0447715},{"x": 10.1,"y":1.2798827},{"x": 80.4,"y":-0.6114892000000012},{"x": 5.2,"y":1.0741604000000002},{"x": 60.1,"y":0.4362326999999988},{"x": 70.1,"y":0.4275026999999998},{"x": 40.6,"y":1.3032561999999999}],[{"x": 35.1,"y":0.3934328200000001},{"x": 1.5,"y":-0.6803626999999999},{"x": 35.2,"y":-0.8158713600000009},{"x": 4.5,"y":0.04051190000000027},{"x": 10.1,"y":0.3194778199999999},{"x": 80.4,"y":-1.0213607200000006},{"x": 5.2,"y":0.07538263999999995},{"x": 60.1,"y":-0.13261218000000063},{"x": 70.1,"y":-0.06303018000000016},{"x": 40.6,"y":0.5817029199999997}],[{"x": 35.1,"y":0.5646982399999994},{"x": 1.5,"y":-0.7706464},{"x": 35.2,"y":-0.6438275200000003},{"x": 4.5,"y":-0.026419199999999865},{"x": 10.1,"y":0.2961382399999999},{"x": 80.4,"y":-0.49747104000000064},{"x": 5.2,"y":0.013900480000000215},{"x": 60.1,"y":0.23325823999999962},{"x": 70.1,"y":0.3806822400000005},{"x": 40.6,"y":0.7957814399999998}],[{"x": 35.1,"y":0.64571808},{"x": 1.5,"y":-0.8797487999999998},{"x": 35.2,"y":-0.5622418400000004},{"x": 4.5,"y":-0.11854640000000005},{"x": 10.1,"y":0.23569808000000014},{"x": 80.4,"y":-0.16012568000000016},{"x": 5.2,"y":-0.0742658399999998},{"x": 60.1,"y":0.4557380799999997},{"x": 70.1,"y":0.6597460799999997},{"x": 40.6,"y":0.9079224799999999}],[{"x": 35.1,"y":0.08638890000000021},{"x": 1.5,"y":-0.5835615000000001},{"x": 35.2,"y":-1.1241172000000006},{"x": 4.5,"y":0.10125550000000016},{"x": 10.1,"y":0.31291389999999986},{"x": 80.4,"y":-1.8728744000000024},{"x": 5.2,"y":0.1277128000000003},{"x": 60.1,"y":-0.7401361000000009},{"x": 70.1,"y":-0.7907460999999998},{"x": 40.6,"y":0.20855339999999956}],[{"x": 35.1,"y":0.7372296599999997},{"x": 1.5,"y":-0.6399200999999999},{"x": 35.2,"y":-0.4711716800000012},{"x": 4.5,"y":0.10803969999999996},{"x": 10.1,"y":0.43756466000000005},{"x": 80.4,"y":-0.2685773600000001},{"x": 5.2,"y":0.14923032000000003},{"x": 60.1,"y":0.4368946599999992},{"x": 70.1,"y":0.5967606599999993},{"x": 40.6,"y":0.9751559599999995}],[{"x": 35.1,"y":0.5197555899999999},{"x": 1.5,"y":-0.35185865000000005},{"x": 35.2,"y":-0.6901503200000008},{"x": 4.5,"y":0.3509640500000004},{"x": 10.1,"y":0.5962330900000001},{"x": 80.4,"y":-1.1676216400000001},{"x": 5.2,"y":0.38162268000000044},{"x": 60.1,"y":-0.1567219099999999},{"x": 70.1,"y":-0.14731291000000013},{"x": 40.6,"y":0.6749305400000001}],[{"x": 35.1,"y":0.7463506799999999},{"x": 1.5,"y":-0.1046298000000001},{"x": 35.2,"y":-0.46361664000000147},{"x": 4.5,"y":0.5963506000000001},{"x": 10.1,"y":0.8381806799999998},{"x": 80.4,"y":-0.9688452800000018},{"x": 5.2,"y":0.62657936},{"x": 60.1,"y":0.054520679999999544},{"x": 70.1,"y":0.057788679999999815},{"x": 40.6,"y":0.8981480800000003}],[{"x": 35.1,"y":0.5118304799999995},{"x": 1.5,"y":-0.8901227999999999},{"x": 35.2,"y":-0.6964970400000006},{"x": 4.5,"y":-0.13994839999999975},{"x": 10.1,"y":0.19371048000000046},{"x": 80.4,"y":-0.4605360800000007},{"x": 5.2,"y":-0.09824103999999956},{"x": 60.1,"y":0.2299504799999994},{"x": 70.1,"y":0.39719848000000013},{"x": 40.6,"y":0.7538168800000005}] 5 | ] 6 | 7 |
8 |
9 | -------------------------------------------------------------------------------- /examples/eg/26.html: -------------------------------------------------------------------------------- 1 |

Example 26 (points plot with discrete palette)

2 | 3 | 4 | female #FF7F7F; male #7F7FFF 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | Tom,35.1,6.3,male,20 15 | Harriet,1.5,2.1,female,10 16 | Antonia,35.2,5.1,female,25 17 | Ada,4.5,3.1,female,12 18 | Foo,10.1,3.9,female,15 19 | Bar,80.4,9.1,female,22 20 | Baz,5.2,3.2,male,13 21 | Jim,60.1,8.1,male,24 22 | Ted,70.1,9.1,male,18 23 | Jerry,40.6,7,male,16 24 | 25 | -------------------------------------------------------------------------------- /examples/eg/27.html: -------------------------------------------------------------------------------- 1 |

Example 27 (points plot with discrete marker palette)

2 | 3 | 4 | female circle; male square 5 | 6 | 7 | 10 | 12 | 13 | 14 | 15 | Tom,35.1,6.3,male,20 16 | Harriet,1.5,2.1,female,10 17 | Antonia,35.2,5.1,female,25 18 | Ada,4.5,3.1,female,12 19 | Foo,10.1,3.9,female,15 20 | Bar,80.4,9.1,female,22 21 | Baz,5.2,3.2,male,13 22 | Jim,60.1,8.1,male,24 23 | Ted,70.1,9.1,male,18 24 | Jerry,40.6,7,male,16 25 | 26 | -------------------------------------------------------------------------------- /examples/eg/28.html: -------------------------------------------------------------------------------- 1 |

Example 28 (more on palettes)

2 | 3 | 4 | 0 blue; 0.5 grey; 1 red 5 | 6 | 7 | 8 | 0 green; 0.5 yellow; 1 orange 9 | 10 | 11 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/eg/29.html: -------------------------------------------------------------------------------- 1 |

Example 29 (absolute palettes)

2 | 3 | 4 | -1 blue; 0 grey; 1 red 5 | 6 | 7 | 8 | -1 green; 0 yellow; 1 orange 9 | 10 | 11 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/eg/30.html: -------------------------------------------------------------------------------- 1 |

Example 30 (absolute palettes)

2 | 3 |

This is kind of ugly. It would be nice to do some sort of 4 | interpolation to split the path segments at the palette 5 | boundaries...

6 | 7 | 8 | 0 #003300 9 | 100 #00B34D 10 | 600 #E6FF00 11 | 1200 #994D00 12 | 1800 #E6E6FF 13 | 5000 #FFFFFF 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 10 1327 25 | 10.017 1177 26 | 10.033 1039 27 | 10.05 1378 28 | 10.067 1787 29 | 10.083 1847 30 | 10.1 1625 31 | 10.117 1424 32 | 10.133 1745 33 | 10.15 1429 34 | 10.167 1814 35 | 10.183 2036 36 | 10.2 1941 37 | 10.217 1713 38 | 10.233 1429 39 | 10.25 1499 40 | 10.267 1758 41 | 10.283 1960 42 | 10.3 2267 43 | 10.317 2069 44 | 10.333 1864 45 | 10.35 2126 46 | 10.367 2072 47 | 10.383 1814 48 | 10.4 1685 49 | 10.417 1505 50 | 10.433 1431 51 | 10.45 1261 52 | 10.467 1182 53 | 10.483 1101 54 | 10.5 1267 55 | 10.517 1652 56 | 10.533 2012 57 | 10.55 1810 58 | 10.567 1632 59 | 10.583 1492 60 | 10.6 1442 61 | 10.617 1713 62 | 10.633 1835 63 | 10.65 1915 64 | 10.667 2077 65 | 10.683 2125 66 | 10.7 2034 67 | 10.717 1887 68 | 10.733 1697 69 | 10.75 2029 70 | 10.767 1983 71 | 10.783 1774 72 | 10.8 1524 73 | 10.817 1378 74 | 10.833 930 75 | 10.85 905 76 | 10.867 1251 77 | 10.883 1335 78 | 10.9 1148 79 | 10.917 1040 80 | 10.933 987 81 | 10.95 885 82 | 10.967 846 83 | 10.983 840 84 | 11 861 85 | 11.017 866 86 | 11.033 791 87 | 11.05 683 88 | 11.067 659 89 | 11.083 665 90 | 11.1 641 91 | 11.117 627 92 | 11.133 676 93 | 11.15 848 94 | 11.167 1104 95 | 11.183 1166 96 | 11.2 1101 97 | 11.217 1376 98 | 11.233 1381 99 | 11.25 1398 100 | 11.267 1647 101 | 11.283 1567 102 | 11.3 2093 103 | 11.317 2296 104 | 11.333 2147 105 | 11.35 1999 106 | 11.367 1578 107 | 11.383 1519 108 | 11.4 1307 109 | 11.417 1110 110 | 11.433 1034 111 | 11.45 934 112 | 11.467 801 113 | 11.483 712 114 | 11.5 693 115 | 11.517 699 116 | 11.533 730 117 | 11.55 693 118 | 11.567 604 119 | 11.583 570 120 | 11.6 559 121 | 11.617 567 122 | 11.633 597 123 | 11.65 660 124 | 11.667 872 125 | 11.683 1051 126 | 11.7 1057 127 | 11.717 1107 128 | 11.733 1256 129 | 11.75 1484 130 | 11.767 1748 131 | 11.783 1489 132 | 11.8 1324 133 | 11.817 1455 134 | 11.833 1318 135 | 11.85 926 136 | 11.867 597 137 | 11.883 598 138 | 11.9 919 139 | 11.917 1176 140 | 11.933 1533 141 | 11.95 1891 142 | 11.967 1713 143 | 11.983 2044 144 | 12 1936 145 | 12.017 1993 146 | 12.033 1694 147 | 12.05 1625 148 | 12.067 1931 149 | 12.083 1760 150 | 12.1 2102 151 | 12.117 2201 152 | 12.133 2022 153 | 12.15 1982 154 | 12.167 2230 155 | 12.183 2058 156 | 12.2 1835 157 | 12.217 1715 158 | 12.233 2042 159 | 12.25 1960 160 | 12.267 2018 161 | 12.283 1776 162 | 12.3 1786 163 | 12.317 1675 164 | 12.333 1487 165 | 12.35 1349 166 | 12.367 1355 167 | 12.383 1592 168 | 12.4 1326 169 | 12.417 1158 170 | 12.433 1178 171 | 12.45 1204 172 | 12.467 1279 173 | 12.483 1235 174 | 12.5 1309 175 | 12.517 1348 176 | 12.533 1197 177 | 12.55 1272 178 | 12.567 1177 179 | 12.583 1249 180 | 12.6 1365 181 | 12.617 1234 182 | 12.633 1154 183 | 12.65 1182 184 | 12.667 1317 185 | 12.683 1027 186 | 12.7 1038 187 | 12.717 1017 188 | 12.733 1104 189 | 12.75 1080 190 | 12.767 1004 191 | 12.783 860 192 | 12.8 752 193 | 12.817 838 194 | 12.833 1242 195 | 12.85 1220 196 | 12.867 1167 197 | 12.883 1063 198 | 12.9 1067 199 | 12.917 1127 200 | 12.933 1037 201 | 12.95 1044 202 | 12.967 1008 203 | 12.983 909 204 | 13 864 205 | 206 | -------------------------------------------------------------------------------- /examples/eg/31.html: -------------------------------------------------------------------------------- 1 |

Example 31 (Tom's plot-options example)

2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /examples/eg/33.html: -------------------------------------------------------------------------------- 1 |

Example 33 (banded palettes)

2 | 3 | 4 | 0 blue; 0.5 red 5 | 6 | 7 | 8 | 0 green; 0.5 orange 9 | 10 | 11 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/eg/34.html: -------------------------------------------------------------------------------- 1 |

Example 34 (data access via URL)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /examples/eg/36.html: -------------------------------------------------------------------------------- 1 |

Example 36 (compact palette syntax #1)

2 | 3 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /examples/eg/37.html: -------------------------------------------------------------------------------- 1 |

Example 37 (compact palette syntax #2)

2 | 3 | 6 | 8 | 9 | 10 | 11 | 12 | Tom,35.1,6.3,male,20 13 | Harriet,1.5,2.1,female,10 14 | Antonia,35.2,5.1,female,25 15 | Ada,4.5,3.1,female,12 16 | Foo,10.1,3.9,female,15 17 | Bar,80.4,9.1,female,22 18 | Baz,5.2,3.2,male,13 19 | Jim,60.1,8.1,male,24 20 | Ted,70.1,9.1,male,18 21 | Jerry,40.6,7,male,16 22 | 23 | -------------------------------------------------------------------------------- /examples/eg/38.html: -------------------------------------------------------------------------------- 1 |

Example 38 (functional plots with palettes)

2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/eg/39.html: -------------------------------------------------------------------------------- 1 |

Example 39 (Wealth & Health of Nations)

2 | 3 |
4 | 5 | 7 |
8 |
9 | 10 | 11 | 12 | 13 | 23 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /examples/eg/40.html: -------------------------------------------------------------------------------- 1 |

Example 40 (expression plucking)

2 | 3 |
4 | 5 | 7 |
8 |
9 | 10 | 11 | 12 | 13 | 22 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /examples/eg/41.html: -------------------------------------------------------------------------------- 1 |

Example 41 (plot title)

2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/eg/42.html: -------------------------------------------------------------------------------- 1 |

Example 42 (layout #1)

2 | 3 |

Laid out as a row: 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/eg/43.html: -------------------------------------------------------------------------------- 1 |

Example 43 (layout #2)

2 | 3 |

Laid out as a column: 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/eg/44.html: -------------------------------------------------------------------------------- 1 |

Example 44 (layout #3)

2 | 3 |

Laid out as a 2 × 2 grid (manual): 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /examples/eg/45.html: -------------------------------------------------------------------------------- 1 |

Example 45 (layout #4)

2 | 3 |

Differing ratios (simple case): 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/eg/46.html: -------------------------------------------------------------------------------- 1 |

Example 46 (layout #5)

2 | 3 |

Differing ratios (more complex case): 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /examples/eg/47.html: -------------------------------------------------------------------------------- 1 |

Example 47 (layout #6)

2 | 3 |

Laid out as a 2 × 2 grid (automatic): 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /examples/eg/48.html: -------------------------------------------------------------------------------- 1 |

Example 48 (palettes with ng-repeat)

2 | 3 | 4 | [[body]] 5 | 6 | 7 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /examples/eg/49.html: -------------------------------------------------------------------------------- 1 |

Example 49 (font styles)

2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/eg/51.html: -------------------------------------------------------------------------------- 1 |

Example 51 (bar chart: pixel width bars)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 1, 2 13 | 2, 4 14 | 3, 8 15 | 4, 16 16 | 5, 32 17 | 6, 48 18 | 7, 24 19 | 8, 12 20 | 9, 6 21 | 10, 3 22 | 23 | -------------------------------------------------------------------------------- /examples/eg/52.html: -------------------------------------------------------------------------------- 1 |

Example 52 (simple heat map)

2 | 3 | 4 | 6 | 7 | 8 | 9 | -1.358218406,-1.680180041 10 | 1.019182305,0.372856303 11 | -0.046088243,-1.437769350 12 | -1.652131815,1.508971050 13 | 0.880858861,-1.351061092 14 | -0.421879985,0.460046324 15 | -1.775861788,-0.377353402 16 | -0.432299413,-0.544505160 17 | 0.597065895,1.063556238 18 | 1.018733929,0.516806935 19 | 0.693442592,0.818444791 20 | -0.151663918,0.365657710 21 | -0.484266425,1.106456147 22 | -0.563660625,-0.340853294 23 | 1.027548529,1.374454347 24 | 0.018512709,0.497770566 25 | -0.898245409,-0.273169274 26 | 0.401530957,-0.674111550 27 | -1.614098348,-0.004893727 28 | 0.475737412,-0.167170150 29 | 2.896699296,-1.644885154 30 | 0.369390551,-0.363407053 31 | 0.195674450,0.796902390 32 | -0.455183324,0.579003105 33 | -0.840773769,-1.275440408 34 | 0.201168111,-0.145193347 35 | -0.977505714,-1.097588725 36 | -0.157543842,0.931822793 37 | 1.213436851,1.298792286 38 | -0.095741952,2.106816580 39 | -0.111263004,-2.078441409 40 | -1.052447580,0.491906540 41 | -0.223993725,0.596251685 42 | -0.052027197,0.232441049 43 | 1.649155223,1.106705488 44 | 0.034758550,0.089969971 45 | 0.630451636,-2.019073856 46 | 0.317187144,0.159083991 47 | 0.907639885,0.389694700 48 | 3.507502055,0.745939039 49 | 0.241160732,0.863903018 50 | -1.626223538,1.011512303 51 | 0.989728940,1.009256748 52 | 0.617118223,-0.954345976 53 | 1.281573323,-0.980004467 54 | 0.495453751,-0.368463663 55 | 0.123889926,-1.535610105 56 | 0.335354589,0.014701983 57 | -0.338484233,-0.666617714 58 | 1.027240081,-0.576596127 59 | 0.171040222,0.260085664 60 | 0.111490346,-0.164757454 61 | -0.596089124,1.235859094 62 | 0.375068347,1.108377818 63 | 0.875997125,0.491710332 64 | 0.226746929,0.666406706 65 | -2.352907879,-0.200828814 66 | -0.300730546,-0.467913893 67 | 0.206455528,0.983026064 68 | -0.740838462,-1.625012236 69 | -0.282646786,0.966176452 70 | -1.444361250,-0.192205832 71 | 1.215377424,-0.655657397 72 | -0.717685934,-1.684864615 73 | -0.592155462,-0.063825352 74 | 2.519884926,-1.399751647 75 | -0.235264465,-1.448776053 76 | 0.168046668,-0.677469532 77 | -0.858446520,0.075247524 78 | -0.426844135,0.138844531 79 | -1.010234356,0.591016780 80 | 0.679895798,0.764228183 81 | -0.387500047,-1.692940404 82 | 2.520777242,1.920958205 83 | -0.488662927,0.472892173 84 | 0.009272712,-0.936161622 85 | -0.053498613,0.573661462 86 | -0.457075249,0.502713786 87 | -0.574686946,-0.257165813 88 | 0.285084048,0.307028734 89 | -0.445707159,0.529429678 90 | 1.748563380,-1.349685484 91 | 0.428504645,0.141547824 92 | -0.710781981,1.296516455 93 | -0.907194831,-1.654794968 94 | -0.654270763,-1.238840341 95 | -0.174782471,0.165698550 96 | 2.120830108,0.656595369 97 | 0.256434229,-0.068412006 98 | 0.097702199,0.657398908 99 | -1.643564412,-1.029640776 100 | 1.287269469,0.253276516 101 | -0.779834081,-0.752704032 102 | -0.400443388,-0.144411218 103 | 0.864388402,-1.466337337 104 | -0.326945256,-2.497433918 105 | 0.312223956,0.377362888 106 | 0.948793386,0.738802681 107 | 0.456457305,0.478290244 108 | 0.466944067,-0.500205475 109 | 110 | -------------------------------------------------------------------------------- /examples/eg/55.html: -------------------------------------------------------------------------------- 1 |

Example 55 (scientific notation in axes)

2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 1,1.15840580e-10 14 | 2,1.27013392e-10 15 | 3,0.98934807e-10 16 | 4,0.39070145e-10 17 | 5,0.58414532e-10 18 | 6,0.81521927e-10 19 | 7,0.10445206e-10 20 | 8,0.80654344e-10 21 | 9,0.40581958e-10 22 | 10,0.79816474e-10 23 | 11,0.99932164e-10 24 | 12,1.38384271e-10 25 | 13,0.76326904e-10 26 | 14,1.72209752e-10 27 | 15,0.79112567e-10 28 | 16,0.83746743e-10 29 | 17,0.98052189e-10 30 | 18,0.38358870e-10 31 | 19,0.62849971e-10 32 | 20,1.32246760e-10 33 | 21,0.55229763e-10 34 | 22,0.44525934e-10 35 | 23,1.00966373e-10 36 | 24,1.28942316e-10 37 | 25,0.31069022e-10 38 | 26,0.81746529e-10 39 | 27,1.92562534e-10 40 | 28,0.40471075e-10 41 | 29,1.91250070e-10 42 | 30,0.58428672e-10 43 | 31,-0.03844271e-10 44 | 32,2.06989036e-10 45 | 33,1.09548422e-10 46 | 34,1.79810674e-10 47 | 35,0.58709684e-10 48 | 36,0.69986275e-10 49 | 37,0.14885343e-10 50 | 38,1.63296044e-10 51 | 39,1.38856254e-10 52 | 40,0.97162970e-10 53 | 41,1.60346450e-10 54 | 42,0.79342224e-10 55 | 43,1.86991625e-10 56 | 44,0.80261642e-10 57 | 45,1.08759861e-10 58 | 46,1.40507575e-10 59 | 47,1.64700012e-10 60 | 48,1.31706171e-10 61 | 49,0.60968495e-10 62 | 50,0.92350034e-10 63 | 51,0.71165839e-10 64 | 52,1.24265064e-10 65 | 53,0.86155379e-10 66 | 54,0.26005455e-10 67 | 55,1.25064999e-10 68 | 56,1.34879880e-10 69 | 57,0.24115538e-10 70 | 58,0.15822579e-10 71 | 59,0.88160621e-10 72 | 60,0.50593021e-10 73 | 61,1.46450946e-10 74 | 62,0.27423714e-10 75 | 63,0.25086358e-10 76 | 64,0.18539027e-10 77 | 65,0.57314032e-10 78 | 66,1.16976008e-10 79 | 67,0.96172040e-10 80 | 68,1.41435173e-10 81 | 69,1.37189219e-10 82 | 70,0.82189243e-10 83 | 71,0.97711878e-10 84 | 72,0.20875285e-10 85 | 73,0.38146485e-10 86 | 74,1.33508999e-10 87 | 75,0.21035114e-10 88 | 76,1.20421560e-10 89 | 77,1.06282954e-10 90 | 78,0.74138976e-10 91 | 79,0.78066716e-10 92 | 80,0.89835894e-10 93 | 81,0.62056780e-10 94 | 82,1.05076729e-10 95 | 83,0.34183911e-10 96 | 84,1.44704536e-10 97 | 85,1.25223482e-10 98 | 86,0.55869159e-10 99 | 87,1.50257600e-10 100 | 88,1.62975026e-10 101 | 89,0.25464763e-10 102 | 90,0.62856572e-10 103 | 91,0.07996026e-10 104 | 92,1.65902530e-10 105 | 93,0.05864474e-10 106 | 94,1.06482132e-10 107 | 95,0.47950483e-10 108 | 96,0.95666573e-10 109 | 97,0.29228780e-10 110 | 98,1.07024419e-10 111 | 99,0.50601098e-10 112 | 100,0.55983770e-10 113 | 114 | -------------------------------------------------------------------------------- /examples/eg/57.html: -------------------------------------------------------------------------------- 1 |

Example 57 (explicit ticks)

2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /examples/eg/58.html: -------------------------------------------------------------------------------- 1 |

Example 58 (tick sizes/padding)

2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/eg/60.html: -------------------------------------------------------------------------------- 1 |

Example 60 (categorical bars #1)

2 | 3 | 4 | female #FF7F7F; male #7F7FFF 5 | 6 | 7 | 8 | rural #10520D; urban #505050 9 | 10 | 11 | 13 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 25 | 28 | 29 | 30 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | [ { "sex": "female", "env": "rural", "age": "50-54", "rate": 15.5 }, 43 | { "sex": "female", "env": "rural", "age": "55-59", "rate": 20.2 }, 44 | { "sex": "female", "env": "rural", "age": "60-64", "rate": 32.1 }, 45 | { "sex": "female", "env": "rural", "age": "65-69", "rate": 48.0 }, 46 | { "sex": "female", "env": "rural", "age": "70-74", "rate": 65.5 }, 47 | { "sex": "female", "env": "urban", "age": "50-54", "rate": 15.5 }, 48 | { "sex": "female", "env": "urban", "age": "55-59", "rate": 20.2 }, 49 | { "sex": "female", "env": "urban", "age": "60-64", "rate": 32.1 }, 50 | { "sex": "female", "env": "urban", "age": "65-69", "rate": 48.0 }, 51 | { "sex": "female", "env": "urban", "age": "70-74", "rate": 65.5 }, 52 | { "sex": "male", "env": "rural", "age": "50-54", "rate": 17.5 }, 53 | { "sex": "male", "env": "rural", "age": "55-59", "rate": 21.2 }, 54 | { "sex": "male", "env": "rural", "age": "60-64", "rate": 37.1 }, 55 | { "sex": "male", "env": "rural", "age": "65-69", "rate": 49.0 }, 56 | { "sex": "male", "env": "rural", "age": "70-74", "rate": 66.5 }, 57 | { "sex": "male", "env": "urban", "age": "50-54", "rate": 18.5 }, 58 | { "sex": "male", "env": "urban", "age": "55-59", "rate": 23.2 }, 59 | { "sex": "male", "env": "urban", "age": "60-64", "rate": 35.1 }, 60 | { "sex": "male", "env": "urban", "age": "65-69", "rate": 49.0 }, 61 | { "sex": "male", "env": "urban", "age": "70-74", "rate": 67.5 } ] 62 | 63 | -------------------------------------------------------------------------------- /examples/eg/61.html: -------------------------------------------------------------------------------- 1 |

Example 61 (categorical bars #2)

2 | 3 | 4 | female #FF7F7F; male #7F7FFF 5 | 6 | 7 | 8 | female:rural #FF7F7F 9 | female:urban #FF0000 10 | male:rural #7F7FFF 11 | male:urban #0000FF 12 | 13 | 14 | 16 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | [ { "sex": "female", "env": "rural", "age": "50-54", "rate": 15.5 }, 41 | { "sex": "female", "env": "rural", "age": "55-59", "rate": 20.2 }, 42 | { "sex": "female", "env": "rural", "age": "60-64", "rate": 32.1 }, 43 | { "sex": "female", "env": "rural", "age": "65-69", "rate": 48.0 }, 44 | { "sex": "female", "env": "rural", "age": "70-74", "rate": 65.5 }, 45 | { "sex": "female", "env": "urban", "age": "50-54", "rate": 15.5 }, 46 | { "sex": "female", "env": "urban", "age": "55-59", "rate": 20.2 }, 47 | { "sex": "female", "env": "urban", "age": "60-64", "rate": 32.1 }, 48 | { "sex": "female", "env": "urban", "age": "65-69", "rate": 48.0 }, 49 | { "sex": "female", "env": "urban", "age": "70-74", "rate": 65.5 }, 50 | { "sex": "male", "env": "rural", "age": "50-54", "rate": 15.5 }, 51 | { "sex": "male", "env": "rural", "age": "55-59", "rate": 20.2 }, 52 | { "sex": "male", "env": "rural", "age": "60-64", "rate": 32.1 }, 53 | { "sex": "male", "env": "rural", "age": "65-69", "rate": 48.0 }, 54 | { "sex": "male", "env": "rural", "age": "70-74", "rate": 65.5 }, 55 | { "sex": "male", "env": "urban", "age": "50-54", "rate": 15.5 }, 56 | { "sex": "male", "env": "urban", "age": "55-59", "rate": 20.2 }, 57 | { "sex": "male", "env": "urban", "age": "60-64", "rate": 32.1 }, 58 | { "sex": "male", "env": "urban", "age": "65-69", "rate": 48.0 }, 59 | { "sex": "male", "env": "urban", "age": "70-74", "rate": 65.5 } ] 60 | 61 | -------------------------------------------------------------------------------- /examples/eg/63.html: -------------------------------------------------------------------------------- 1 |

Example 63 (complex plot stack)

2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /examples/eg/64.html: -------------------------------------------------------------------------------- 1 |

Example 64 (nested plot stacks)

2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /examples/eg/66.html: -------------------------------------------------------------------------------- 1 |

Example 66 (hierarchical JSON data)

2 | 3 | 6 |
7 |
8 | 9 | 10 | { 11 | "fathers" : [ 12 | { 13 | "id" : 0, 14 | "married" : 20, 15 | "name" : "George Lopez", 16 | "sons" : null, 17 | "daughters" : [ 18 | { 19 | "age" : 26, 20 | "name" : "Kimberly" 21 | } 22 | ] 23 | }, 24 | { 25 | "id" : 1, 26 | "married" : 15, 27 | "name" : "Anthony Davis", 28 | "sons" : null, 29 | "daughters" : [ 30 | { 31 | "age" : 26, 32 | "name" : "Angela" 33 | } 34 | ] 35 | }, 36 | { 37 | "id" : 2, 38 | "married" : 17, 39 | "name" : "Anthony Perez", 40 | "sons" : null, 41 | "daughters" : [ 42 | { 43 | "age" : 26, 44 | "name" : "Angela" 45 | } 46 | ] 47 | }, 48 | { 49 | "id" : 3, 50 | "married" : 30, 51 | "name" : "Anthony Clark", 52 | "sons" : null, 53 | "daughters" : [ 54 | { 55 | "age" : 3, 56 | "name" : "Betty" 57 | } 58 | ] 59 | }, 60 | { 61 | "id" : 4, 62 | "married" : 40, 63 | "name" : "Scott Smith", 64 | "sons" : null, 65 | "daughters" : [ 66 | { 67 | "age" : 29, 68 | "name" : "Linda" 69 | } 70 | ] 71 | } 72 | ] 73 | } 74 | 75 | -------------------------------------------------------------------------------- /examples/eg/67.html: -------------------------------------------------------------------------------- 1 |

Example 67 (data access via URL with Angular binding)

2 | 3 |
4 | 5 | 13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /examples/eg/68.html: -------------------------------------------------------------------------------- 1 |

Example 68 (data access via URL with ng-model)

2 | 3 |
4 | 5 | 13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | -------------------------------------------------------------------------------- /examples/eg/70.html: -------------------------------------------------------------------------------- 1 |

Example 70 (UI in layout #2)

2 | 3 |

Differing ratios (more complex case): 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /examples/eg/71.html: -------------------------------------------------------------------------------- 1 |

Example 71 (UI in layout #3)

2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /examples/eg/72.html: -------------------------------------------------------------------------------- 1 |

Example 72 (font sizing)

2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/eg/73.html: -------------------------------------------------------------------------------- 1 |

Example 73 (rug plots)

2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 0.285644746 0.51317313 33 | -1.148812623 0.14225916 34 | 0.311602315 0.13027272 35 | 1.557207138 1.41844903 36 | -0.578055154 -0.81454420 37 | 0.537309711 -0.61242967 38 | 0.210967551 -0.72789853 39 | 2.509081885 1.50031486 40 | -0.797228528 -0.45965649 41 | 0.299320701 -0.09480252 42 | -0.272059342 0.01294820 43 | -0.005979462 0.01445887 44 | -0.178707975 -0.55669303 45 | -0.006892134 -0.29560921 46 | 0.135256556 0.45395144 47 | -0.186289896 -0.82873833 48 | -0.353571155 -0.07675102 49 | -0.514441579 -0.14968482 50 | -1.240305819 -1.82166849 51 | -0.615962470 0.41422915 52 | 0.349033634 0.02524461 53 | 0.461894754 0.05639841 54 | -1.261863822 -1.04390604 55 | 0.034621557 0.19090845 56 | 1.928425810 1.38149632 57 | -1.149954025 -2.18883066 58 | 0.050614913 -0.88399132 59 | 1.035680017 1.70454393 60 | -0.499590965 -1.28281875 61 | -0.666756822 1.15948862 62 | 0.435438547 0.37237258 63 | -0.155318133 -1.06040682 64 | 1.481993769 -0.06881688 65 | -1.511312250 -0.22264407 66 | -0.432459266 -1.29551169 67 | -0.690148575 -1.86868891 68 | -0.103233823 -0.12038043 69 | -1.844196417 -0.93573464 70 | 1.826117287 1.21206105 71 | 0.320935314 0.25925888 72 | -1.525831341 -1.10858940 73 | 1.209172684 1.91201791 74 | 1.106126867 0.14825319 75 | -0.553749429 -0.67196790 76 | -0.249082499 0.00858775 77 | 0.649241680 0.59109080 78 | -0.543567871 -0.23588514 79 | 0.492066325 0.33628258 80 | -0.335085309 -0.27157110 81 | 0.076548240 -0.14132933 82 | -1.005405493 -1.63229844 83 | -1.907309079 -1.16307967 84 | -0.366687755 0.08770088 85 | -0.344698293 -0.27076719 86 | 0.329979996 -0.25111909 87 | 1.807804597 1.51456956 88 | -0.529689657 -0.27957604 89 | 0.370305013 0.55585935 90 | -2.261031339 -1.59399133 91 | 1.675134892 2.26037665 92 | -0.539122694 -1.06306338 93 | -0.360739527 -0.25880583 94 | 0.076953686 0.32968050 95 | -0.400332185 0.11429251 96 | -0.967087297 -0.38048916 97 | 0.189531474 -0.95084680 98 | -2.474058006 -2.59394647 99 | -0.158475717 1.05761489 100 | -0.621382712 0.01097507 101 | 1.200614035 1.34225532 102 | -1.177523811 -0.22063496 103 | 1.039314047 0.44533256 104 | 0.067742030 -0.48032040 105 | -1.551305739 -1.85725860 106 | -1.761070935 -2.20419867 107 | -0.198132305 -1.20533645 108 | 1.280805841 0.14251391 109 | -0.839691372 0.39519718 110 | -0.265819159 0.67382983 111 | 0.033611268 0.10353763 112 | 1.111285752 -0.05022565 113 | -0.706972414 -0.50828013 114 | -2.182363843 -1.87602629 115 | -0.147025699 -0.15746860 116 | 0.356084802 -0.06492207 117 | 1.384482023 -0.26040303 118 | -0.447964898 -0.78367243 119 | 0.189728346 -0.30611561 120 | -1.336760966 -2.12738951 121 | -0.388678681 -0.36140845 122 | -0.455205530 -0.38471133 123 | 2.092144202 1.07277948 124 | -0.200774306 -0.40368608 125 | 2.032352811 2.13474507 126 | -0.327691870 0.46363928 127 | 0.677163072 -0.63910965 128 | -2.124381470 -3.16540892 129 | -1.170917823 -1.14982455 130 | 0.184655020 1.28058455 131 | 0.402008318 0.74027822 132 | 133 | -------------------------------------------------------------------------------- /examples/eg/76.html: -------------------------------------------------------------------------------- 1 |

Example 76 (axis transformations)

2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/eg/77.html: -------------------------------------------------------------------------------- 1 |

Example 77 (legends)

2 | 3 |

Default: position at top left, no frame, default white background; 4 | explicit entries.

5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |

Position at top left, frame, default white background; explicit 17 | entries.

18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |

Position at top left, frame and transparent background; explicit 30 | entries.

31 | 32 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |

Position at bottom left, frame and default white background; 43 | explicit entries.

44 | 45 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |

Position at top right, frame and default white background; explicit 56 | entries.

57 | 58 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |

Explicit position, frame and default white background; explicit 69 | entries.

70 | 71 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |

Implicit entries.

82 | 83 | 85 | 86 | 87 | 88 | 89 | 90 | 91 |

Entry sorting.

92 | 93 | 95 | 96 | 97 | 98 | 99 | 100 | 101 |

Interactivity.

102 | 103 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /examples/eg/79.html: -------------------------------------------------------------------------------- 1 |

Example 79 (missing data)

2 | 3 | 4 | 5 | 7 | 9 | 10 | 11 | 12 | 13 | 15 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 26 | 27 | 28 | 29 | 31 | 36 | 37 | 38 | 40 | 42 | 43 | 44 | "2014-01-02T21:40:51.293Z", 5,8 45 | "2014-01-02T23:22:51.293Z", 4,7 46 | "2014-01-03T07:53:41.744Z", 1,6 47 | "2014-01-03T14:53:41.744Z", 2, 48 | "2014-01-03T16:27:52.161Z", 4,8 49 | "2014-01-03T18:27:52.161Z", 5, 50 | "2014-01-03T20:27:52.161Z", 4,7 51 | "2014-01-03T22:34:26.221Z", 6,4 52 | 53 | 54 | -------------------------------------------------------------------------------- /examples/eg/80.html: -------------------------------------------------------------------------------- 1 |

Example 80 (Tom's area plots)

2 | 3 | 4 | 1, 40, 60 5 | 2, 40, 60 6 | 3, 40, 60 7 | 4, 40, 60 8 | 5, 40, 60 9 | 6, 40, 60 10 | 7, 40, 60 11 | 8, 40, 60 12 | 9, 40, 60 13 | 10, 40, 60 14 | 15 | 16 | 1, 40 17 | 2, 61 18 | 3, 40 19 | 4, 54 20 | 5, 40 21 | 6, 40 22 | 7, 61 23 | 8, 40 24 | 9, 40 25 | 10, 49 26 | 27 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/eg/81.html: -------------------------------------------------------------------------------- 1 |

Example 81 (points plot with textual markers)

2 | 3 | 5 | 7 | 8 | 9 | 11 | 13 | 14 | 15 | 18 | 20 | 21 | 22 | 25 | 27 | 29 | 30 | 31 | 34 | 36 | 38 | 39 | 40 | 43 | 45 | 47 | 48 | 49 | 50 | Tom,35.1,6.3,male,20 51 | Harriet,1.5,2.1,female,10 52 | Antonia,35.2,5.1,female,25 53 | Ada,4.5,3.1,female,12 54 | Foo,10.1,3.9,female,15 55 | Bar,80.4,9.1,female,22 56 | Baz,5.2,3.2,male,13 57 | Jim,60.1,8.1,male,24 58 | Ted,70.1,9.1,male,18 59 | Jerry,40.6,7,male,16 60 | 61 | -------------------------------------------------------------------------------- /examples/eg/84.html: -------------------------------------------------------------------------------- 1 |

Example 84 (date metadata for JSON)

2 | 3 | 6 | 7 | 8 | 9 | 10 | [{ "date":"2012-01-01", "tmp": 3.80, "prc": 0.90 }, 11 | { "date":"2012-01-02", "tmp": 5.50, "prc": 3.40 }, 12 | { "date":"2012-01-03", "tmp": 7.90, "prc": 9.40 }, 13 | { "date":"2012-01-04", "tmp": 8.50, "prc":13.00 }, 14 | { "date":"2012-01-05", "tmp": 4.90, "prc": 3.20 }, 15 | { "date":"2012-01-06", "tmp": 2.70, "prc": 1.40 }, 16 | { "date":"2012-01-07", "tmp": 5.70, "prc": 1.60 }, 17 | { "date":"2012-01-08", "tmp": 6.50, "prc": 0.60 }, 18 | { "date":"2012-01-09", "tmp": 6.80, "prc": 0.40 }, 19 | { "date":"2012-01-10", "tmp": 2.20, "prc": 0.00 }, 20 | { "date":"2012-01-11", "tmp": 1.40, "prc": 0.00 }, 21 | { "date":"2012-01-12", "tmp": 1.60, "prc": 0.00 }, 22 | { "date":"2012-01-13", "tmp":-0.10, "prc": 0.00 }, 23 | { "date":"2012-01-14", "tmp": 1.70, "prc": 3.40 }, 24 | { "date":"2012-01-15", "tmp":-1.10, "prc": 0.00 }, 25 | { "date":"2012-01-16", "tmp":-1.20, "prc": 0.00 }, 26 | { "date":"2012-01-17", "tmp":-1.40, "prc": 0.00 }, 27 | { "date":"2012-01-18", "tmp":-3.80, "prc": 0.00 }, 28 | { "date":"2012-01-19", "tmp":-2.60, "prc": 0.00 }, 29 | { "date":"2012-01-20", "tmp": 2.60, "prc":15.40 }, 30 | { "date":"2012-01-21", "tmp": 5.50, "prc": 3.20 }, 31 | { "date":"2012-01-22", "tmp": 5.10, "prc": 2.20 }, 32 | { "date":"2012-01-23", "tmp": 5.50, "prc": 2.70 }, 33 | { "date":"2012-01-24", "tmp": 7.50, "prc":13.00 }, 34 | { "date":"2012-01-25", "tmp": 6.80, "prc":12.80 }, 35 | { "date":"2012-01-26", "tmp": 4.00, "prc": 3.40 }, 36 | { "date":"2012-01-27", "tmp": 2.50, "prc": 0.00 }, 37 | { "date":"2012-01-28", "tmp": 2.70, "prc": 0.50 }, 38 | { "date":"2012-01-29", "tmp": 5.40, "prc":11.00 }, 39 | { "date":"2012-01-30", "tmp": 7.60, "prc": 0.80 }, 40 | { "date":"2012-01-31", "tmp": 6.80, "prc": 1.80 }] 41 | 42 | -------------------------------------------------------------------------------- /examples/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/examples/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /examples/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/examples/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | My AngularJS App 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |
16 |
17 |
18 |
19 | 25 |
26 |
27 | 32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /examples/lib: -------------------------------------------------------------------------------- 1 | ../lib -------------------------------------------------------------------------------- /examples/tst.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | My AngularJS App 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /lib/angular/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.0.4 3 | (c) 2010-2012 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(m,f,l){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(d,c){var b={},g={},h,i=!1,j=f.copy,k=f.isUndefined;c.addPollFn(function(){var a=c.cookies();h!=a&&(h=a,j(a,g),j(a,b),i&&d.$apply())})();i=!0;d.$watch(function(){var a,e,d;for(a in g)k(b[a])&&c.cookies(a,l);for(a in b)e=b[a],f.isString(e)?e!==g[a]&&(c.cookies(a,e),d=!0):f.isDefined(g[a])?b[a]=g[a]:delete b[a];if(d)for(a in e=c.cookies(),b)b[a]!==e[a]&&(k(e[a])?delete b[a]:b[a]=e[a])});return b}]).factory("$cookieStore", 7 | ["$cookies",function(d){return{get:function(c){return f.fromJson(d[c])},put:function(c,b){d[c]=f.toJson(b)},remove:function(c){delete d[c]}}}])})(window,window.angular); 8 | -------------------------------------------------------------------------------- /lib/angular/angular-loader.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.0.4 3 | (c) 2010-2012 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(i){'use strict';function d(c,b,e){return c[b]||(c[b]=e())}return d(d(i,"angular",Object),"module",function(){var c={};return function(b,e,f){e&&c.hasOwnProperty(b)&&(c[b]=null);return d(c,b,function(){function a(a,b,d){return function(){c[d||"push"]([a,b,arguments]);return g}}if(!e)throw Error("No module: "+b);var c=[],d=[],h=a("$injector","invoke"),g={_invokeQueue:c,_runBlocks:d,requires:e,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"), 7 | value:a("$provide","value"),constant:a("$provide","constant","unshift"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:h,run:function(a){d.push(a);return this}};f&&h(f);return g})}})})(window); 8 | -------------------------------------------------------------------------------- /lib/angular/angular-resource.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.0.4 3 | (c) 2010-2012 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(C,d,w){'use strict';d.module("ngResource",["ng"]).factory("$resource",["$http","$parse",function(x,y){function s(b,e){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(e?null:/%20/g,"+")}function t(b,e){this.template=b+="#";this.defaults=e||{};var a=this.urlParams={};h(b.split(/\W/),function(f){f&&b.match(RegExp("[^\\\\]:"+f+"\\W"))&&(a[f]=!0)});this.template=b.replace(/\\:/g,":")}function u(b,e,a){function f(m,a){var b= 7 | {},a=o({},e,a);h(a,function(a,z){var c;a.charAt&&a.charAt(0)=="@"?(c=a.substr(1),c=y(c)(m)):c=a;b[z]=c});return b}function g(a){v(a||{},this)}var k=new t(b),a=o({},A,a);h(a,function(a,b){a.method=d.uppercase(a.method);var e=a.method=="POST"||a.method=="PUT"||a.method=="PATCH";g[b]=function(b,c,d,B){var j={},i,l=p,q=null;switch(arguments.length){case 4:q=B,l=d;case 3:case 2:if(r(c)){if(r(b)){l=b;q=c;break}l=c;q=d}else{j=b;i=c;l=d;break}case 1:r(b)?l=b:e?i=b:j=b;break;case 0:break;default:throw"Expected between 0-4 arguments [params, data, success, error], got "+ 8 | arguments.length+" arguments.";}var n=this instanceof g?this:a.isArray?[]:new g(i);x({method:a.method,url:k.url(o({},f(i,a.params||{}),j)),data:i}).then(function(b){var c=b.data;if(c)a.isArray?(n.length=0,h(c,function(a){n.push(new g(a))})):v(c,n);(l||p)(n,b.headers)},q);return n};g.prototype["$"+b]=function(a,d,h){var m=f(this),j=p,i;switch(arguments.length){case 3:m=a;j=d;i=h;break;case 2:case 1:r(a)?(j=a,i=d):(m=a,j=d||p);case 0:break;default:throw"Expected between 1-3 arguments [params, success, error], got "+ 9 | arguments.length+" arguments.";}g[b].call(this,m,e?this:w,j,i)}});g.bind=function(d){return u(b,o({},e,d),a)};return g}var A={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},p=d.noop,h=d.forEach,o=d.extend,v=d.copy,r=d.isFunction;t.prototype={url:function(b){var e=this,a=this.template,f,g,b=b||{};h(this.urlParams,function(h,c){f=b.hasOwnProperty(c)?b[c]:e.defaults[c];d.isDefined(f)&&f!==null?(g=s(f,!0).replace(/%26/gi,"&").replace(/%3D/gi, 10 | "=").replace(/%2B/gi,"+"),a=a.replace(RegExp(":"+c+"(\\W)","g"),g+"$1")):a=a.replace(RegExp("(/?):"+c+"(\\W)","g"),function(a,b,c){return c.charAt(0)=="/"?c:b+c})});var a=a.replace(/\/?#$/,""),k=[];h(b,function(a,b){e.urlParams[b]||k.push(s(b)+"="+s(a))});k.sort();a=a.replace(/\/*$/,"");return a+(k.length?"?"+k.join("&"):"")}};return u}])})(window,window.angular); 11 | -------------------------------------------------------------------------------- /lib/angular/angular-sanitize.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.0.4 3 | (c) 2010-2012 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(I,g){'use strict';function i(a){var d={},a=a.split(","),b;for(b=0;b=0;e--)if(f[e]==b)break;if(e>=0){for(c=f.length-1;c>=e;c--)d.end&&d.end(f[c]);f.length= 7 | e}}var c,h,f=[],j=a;for(f.last=function(){return f[f.length-1]};a;){h=!0;if(!f.last()||!q[f.last()]){if(a.indexOf("<\!--")===0)c=a.indexOf("--\>"),c>=0&&(d.comment&&d.comment(a.substring(4,c)),a=a.substring(c+3),h=!1);else if(B.test(a)){if(c=a.match(r))a=a.substring(c[0].length),c[0].replace(r,e),h=!1}else if(C.test(a)&&(c=a.match(s)))a=a.substring(c[0].length),c[0].replace(s,b),h=!1;h&&(c=a.indexOf("<"),h=c<0?a:a.substring(0,c),a=c<0?"":a.substring(c),d.chars&&d.chars(k(h)))}else a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+ 8 | f.last()+"[^>]*>","i"),function(b,a){a=a.replace(D,"$1").replace(E,"$1");d.chars&&d.chars(k(a));return""}),e("",f.last());if(a==j)throw"Parse Error: "+a;j=a}e()}function k(a){l.innerHTML=a.replace(//g,">")}function u(a){var d=!1,b=g.bind(a,a.push);return{start:function(a,c,h){a=g.lowercase(a);!d&&q[a]&&(d=a);!d&&v[a]== 9 | !0&&(b("<"),b(a),g.forEach(c,function(a,c){var e=g.lowercase(c);if(G[e]==!0&&(w[e]!==!0||a.match(H)))b(" "),b(c),b('="'),b(t(a)),b('"')}),b(h?"/>":">"))},end:function(a){a=g.lowercase(a);!d&&v[a]==!0&&(b(""));a==d&&(d=!1)},chars:function(a){d||b(t(a))}}}var s=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,r=/^<\s*\/\s*([\w:-]+)[^>]*>/,A=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,C=/^/g, 10 | E=//g,H=/^((ftp|https?):\/\/|mailto:|#)/,F=/([^\#-~| |!])/g,p=i("area,br,col,hr,img,wbr"),x=i("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),y=i("rp,rt"),o=g.extend({},y,x),m=g.extend({},x,i("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),n=g.extend({},y,i("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")), 11 | q=i("script,style"),v=g.extend({},p,m,n,o),w=i("background,cite,href,longdesc,src,usemap"),G=g.extend({},w,i("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,span,start,summary,target,title,type,valign,value,vspace,width")),l=document.createElement("pre");g.module("ngSanitize",[]).value("$sanitize",function(a){var d=[]; 12 | z(a,u(d));return d.join("")});g.module("ngSanitize").directive("ngBindHtml",["$sanitize",function(a){return function(d,b,e){b.addClass("ng-binding").data("$binding",e.ngBindHtml);d.$watch(e.ngBindHtml,function(c){c=a(c);b.html(c||"")})}}]);g.module("ngSanitize").filter("linky",function(){var a=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,d=/^mailto:/;return function(b){if(!b)return b;for(var e=b,c=[],h=u(c),f,g;b=e.match(a);)f=b[0],b[2]==b[3]&&(f="mailto:"+f),g=b.index, 13 | h.chars(e.substr(0,g)),h.start("a",{href:f}),h.chars(b[0].replace(d,"")),h.end("a"),e=e.substring(g+b[0].length);h.chars(e);return c.join("")}})})(window,window.angular); 14 | -------------------------------------------------------------------------------- /lib/angular/version.txt: -------------------------------------------------------------------------------- 1 | 1.0.4 2 | -------------------------------------------------------------------------------- /lib/jquery.csv.js: -------------------------------------------------------------------------------- 1 | jquery.csv-0.71.min.js -------------------------------------------------------------------------------- /radian.min.css: -------------------------------------------------------------------------------- 1 | .radian svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:block;width:100%;height:100%}.radian svg .no-data text{font-size:24px;font-weight:bold}.radian .background{fill:white;fill-opacity:0}div.radian{position:relative}div.radian div.radian{position:absolute}div.radian-ui{background-color:transparent;position:absolute;top:0;left:0}div.radian-axis-switch{position:absolute;white-space:nowrap}div.radian-stroke-switch{position:absolute;white-space:nowrap}div.radian-histogram-switch{position:absolute;white-space:nowrap}div.radian-legend-switch{position:absolute;white-space:nowrap}div.radian-legend-switch input{position:absolute;display:block;margin:0}.radian .axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.radian .axis line{fill:none;stroke:#000;stroke-opacity:.25;shape-rendering:crispEdges}.radian .axis path.domain{stroke-opacity:.75}.radian .axis line.zero{stroke-opacity:.75}.radian .axis .axisMaxMin text{font-weight:bold}.radian .brush .extent{stroke:#fff;fill-opacity:.125;shape-rendering:crispEdges}.tab-content.radian-tabs{overflow:visible} -------------------------------------------------------------------------------- /src/debug.js: -------------------------------------------------------------------------------- 1 | // Dump tree of Angular scopes to console: useful for making sure that 2 | // scopes have been set up properly in complicated transclusion cases. 3 | 4 | radian.factory('dumpScope', function() 5 | { 6 | 'use strict'; 7 | 8 | var go = function(scope, indent) { 9 | var indentstr = ""; 10 | for (var i = 0; i < indent; ++i) 11 | indentstr = indentstr.concat(" "); 12 | console.log(indentstr + scope.$id + ": " + 13 | Object.keys(scope).filter(function(k) { 14 | return k.charAt(0) != "$" && k != "this"; 15 | })); 16 | for (var ch = scope.$$childHead; ch; ch = ch.$$nextSibling) 17 | go(ch, indent + 2); 18 | }; 19 | return function(scope) { go(scope, 0); }; 20 | }); 21 | -------------------------------------------------------------------------------- /src/end.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/src/end.js -------------------------------------------------------------------------------- /src/start.js: -------------------------------------------------------------------------------- 1 | var radian = angular.module('radian', []); 2 | 3 | -------------------------------------------------------------------------------- /src/ui.js: -------------------------------------------------------------------------------- 1 | radian.directive('radianAxisSwitch', function() 2 | { 3 | return { 4 | restrict: 'E', 5 | template: 6 | ['
', 7 | '', 10 | '
'].join(''), 11 | replace: true, 12 | scope: true, 13 | link: function(scope, elm, as) { 14 | var axis = as.axis || 'y'; 15 | scope.axisName = axis == 'y' ? 'Y' : 'X'; 16 | var uiattr = axis == 'y' ? 'uiAxisYTransform' : 'uiAxisXTransform'; 17 | var attr = axis == 'y' ? 'axisYTransform' : 'axisXTransform'; 18 | var type = scope[uiattr] || 'log'; 19 | scope.states = type.split(/,/); 20 | if (scope.states.length == 1 && scope.states[0] != 'linear') 21 | scope.states.unshift('linear'); 22 | for (var i = 0; i < scope.states.length; ++i) 23 | if (['linear', 'log', 'linear-0'].indexOf(scope.states[i]) < 0) 24 | throw Error("invalid UI axis switch type"); 25 | function setLabel() { 26 | switch (scope.states[(scope.idx + 1) % scope.states.length]) { 27 | case 'linear': scope.label = 'Linear'; break; 28 | case 'log': scope.label = 'Log'; break; 29 | case 'linear-0': scope.label = 'Linear (from 0)'; break; 30 | } 31 | }; 32 | scope.state = scope[attr] || scope.states[0]; 33 | scope.idx = Math.max(0, scope.states.indexOf(scope.state)); 34 | setLabel(); 35 | scope.$on('setupExtraAfter', function() { 36 | var m = scope.views[0].margin; 37 | if (axis == 'y') 38 | elm.css('top', (m.top+3)+'px').css('left', (m.left+3)+'px'); 39 | else 40 | elm.css('bottom', (m.bottom+3)+'px').css('right', (m.right+3)+'px'); 41 | }); 42 | scope.switchState = function() { 43 | scope.idx = (scope.idx + 1) % scope.states.length; 44 | scope.state = scope.states[scope.idx]; 45 | setLabel(); 46 | scope.$emit(axis == 'y' ? 'yAxisChange' : 'xAxisChange', scope.state); 47 | }; 48 | } 49 | }; 50 | }); 51 | 52 | 53 | radian.directive('radianStrokeSwitch', function() 54 | { 55 | return { 56 | restrict: 'E', 57 | template: 58 | ['
', 59 | '
', 60 | '{{swbutlab}}', 61 | '', 65 | '
', 66 | '
', 67 | '', 70 | '
', 71 | '
'].join(""), 72 | replace: true, 73 | scope: true, 74 | link: function(scope, elm, as) { 75 | if (!scope.strokeSwitch) return; 76 | scope.$on('setupExtraAfter', function() { 77 | var m = scope.views[0].margin; 78 | elm.css('top', (m.top+3)+'px').css('right', (m.right+3)+'px'); 79 | }); 80 | scope.switches = scope.strokeSwitch.split(';'); 81 | scope.stepStroke = function() { 82 | scope.$parent.strokesel = 83 | (scope.$parent.strokesel + 1) % scope.switches.length; 84 | }; 85 | var label = scope.strokeSwitchLabel; 86 | if (scope.switches.length == 1) { 87 | // On/off UI. 88 | scope.swbut = scope.switches[0]; 89 | scope.swbutlab = label; 90 | } else { 91 | // Selector UI. 92 | scope.swsel = scope.switches; 93 | } 94 | } 95 | }; 96 | }); 97 | 98 | 99 | radian.directive('radianHistogramSwitch', function() 100 | { 101 | return { 102 | restrict: 'E', 103 | template: 104 | ['
', 105 | '', 108 | '', 111 | '', 114 | '', 117 | '', 120 | '
'].join(""), 121 | replace: true, 122 | scope: true, 123 | link: function(scope, elm, as) { 124 | if (!scope.uiHistogramBins) return; 125 | scope.$on('setupExtraAfter', function() { 126 | var m = scope.views[0].margin; 127 | elm.css('bottom', (m.bottom+3)+'px').css('left', (m.left+3)+'px'); 128 | }); 129 | scope.uiNBins = scope[scope.histogramBinsVar]; 130 | scope.$watch('histogramBinsVar', function(n, o) { 131 | scope.uiNBins = scope[scope.histogramBinsVar]; 132 | }); 133 | scope.up = function(n) { 134 | scope.uiNBins += n; 135 | scope.$parent[scope.histogramBinsVar] = scope.uiNBins; 136 | }; 137 | scope.dn = function(n) { 138 | scope.uiNBins = Math.max(scope.uiNBins - n, 1); 139 | scope.$parent[scope.histogramBinsVar] = scope.uiNBins; 140 | }; 141 | } 142 | }; 143 | }); 144 | -------------------------------------------------------------------------------- /tools/yuicompressor-2.4.8pre.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openbrainsrc/Radian/c687e5d4c0a7e1684c445274c184664293922a4a/tools/yuicompressor-2.4.8pre.jar --------------------------------------------------------------------------------