Looks very nice. I will definitely be using this in the future. Alan On Tue, Dec 18, 2018 at 4:44 AM <boris.sch...@gmail.com> wrote:
> Odd. The exact same code works for me. This is clojure 1.10/oz 1.4, and > evaluating the whole blob from lighttable. > > I had to call (oz/v! line-plot) again to get it to show the figure, > rather then the opening text. And you can leave out the (oz/start-plot- > server!). It will start a server if it needs one. > > I guess I have a similar workflow as Christopher, and similar needs in > terms of visualization. I have used vega-lite through vizard and now oz for > about a year now, after trying so many different visualization packages for > clojure (Incanter/JFreechart, C2, quil, gyptis, quil/grafica, > rojure->ggplot2, vizard). Really happy that oz takes vizard further. > vega/vega-lite works really well with clojure. > > > > On Tuesday, December 18, 2018 at 10:12:07 AM UTC+1, Juraj Martinka wrote: >> >> I'd like to try this but got stuck pretty early: >> >> (ns clojure-repl-experiments.visualizations.oz >> (:require [oz.core :as oz])) >> >> >> (oz/start-plot-server!) >> >> >> (defn group-data [& names] >> (apply concat (for [n names] >> (map-indexed (fn [i x] {:x i :y x :col n}) (take 20 >> (repeatedly >> #(rand-int 100))))))) >> >> >> (def line-plot >> {:data {:values (group-data "monkey" "slipper" "broom")} >> :encoding {:x {:field "x"} >> :y {:field "y"} >> :color {:field "col" :type "nominal"}} >> :mark "line"}) >> >> >> ;; Render the plot to the >> (oz/v! line-plot) >> >> >> >> It has opened a new browser window at http://localhost:10666/ but I see >> nothing only errors in the JS console: >> socket.cljs?rel=1502542805393:64 WebSocket connection to >> 'ws://localhost:3449/figwheel-ws/dev' failed: Error in connection >> establishment: net::ERR_CONNECTION_REFUSED >> figwheel$client$socket$open @ socket.cljs?rel=1502542805393:64 >> 10:10:10.089 >> >> Does it require some special setup (figwheel)? >> >> >> >> >> On Monday, 17 December 2018 21:41:36 UTC+1, Christopher Small wrote: >>> >>> >>> Greetings! >>> >>> I'm happy to announce today the release of Oz 1.4.0. >>> >>> https://github.com/metasoarous/oz >>> >>> If you're on the Slack #datascience channel, you may have already caught >>> wind of some earlier versions. But in the interest of introducing it more >>> broadly, I'm posting an overview here for those of you who aren't familiar. >>> If you *are* familiar, you may still wish to scroll down to the bottom >>> as there are some new features available in the latest release. >>> >>> >>> *Vega & Vega-Lite* >>> >>> Oz is based on the fantastic Vega & Vega-Lite data visualization JS >>> libraries, and so to really understand what Oz has to offer, it's best to >>> start here. Vega & Vega-Lite are based on the seminal Grammar of Graphics, >>> an approach to data visualization which emphasizes writing declarative >>> descriptions of how properties of data should translate to aesthetic >>> attributes of a visualization. This approach guided the design of the R's >>> popular ggplot2 library, and has since influenced numerous libraries in >>> other languages. >>> >>> Vega & Vega-Lite take this vision further in two important ways: >>> >>> 1. In Vega & Vega-Lite, data visualizations are described using *pure >>> data*. This makes it more declarative, and confers all the benefits >>> we know and love about data-driven programming in Clojure. For instance, >>> you can send a chunk of Vega or Vega-Lite data over the wire from one >>> program to another effortlessly (as Oz does), and load it up in another >>> process without having to worry about the security concerns of executing >>> someone else's code. The bottom line is that Vega & Vega-Lite are >>> philosophically and technically compatible with "the Clojure way" (IT'S. >>> JUST. DATA.). >>> 2. Vega & Vega-Lite take the Grammar of Graphics one step further by >>> introducing a Grammar of Interaction. You can declaratively describe the >>> addition of controls (dropdowns, checkboxes, etc) and interactive >>> properties of the visualization itself (click, hover, etc), and use the >>> data from these interactions to inform other parts of a visualization. >>> For >>> example, you might highlight a set of points in one part of a >>> visualization, and display summary statistics about that selection in >>> another. This is facilitated in part by a general purpose dataflow >>> language >>> as part of the greater spec. >>> >>> Vega itself is highly customizable and flexible, but somewhat verbose >>> and not suitable for day to day visualization tasks. Vega-Lite steps in as >>> a somewhat higher level and more automated flavor which itself compiles >>> down to Vega. I have been using them together for a better part of a year >>> now, and can say without reservation that they are amazing. For years I've >>> longed for a ggplot2 from Clojure, and at long last I've found something >>> that to my surprise has not only matched, but truly surpassed the standard >>> bearer. In short, I'm sold. >>> >>> If you want to get a better sense of Vega, and Vega-Lite in particular, >>> I'd recommend this great talk from the creators at the Interactive Data Lab >>> at the University of Washington in Seattle: >>> https://www.youtube.com/watch?v=9uaHRWj04D4 >>> >>> If you're interested in a (mostly) more philosophical look at Vega & >>> Vega-Lite, and their connections to Clojure philosophy, I did a little talk >>> at a local Clojure meetup which you may find interesting: >>> https://www.youtube.com/watch?v=hXq5Bb40zZY&t=815s >>> >>> >>> *Oz* >>> >>> Oz itself is a very small and focused library, as most of the work falls >>> on Vega & Vega-Lite. It offers the following features: >>> >>> - A REPL API for for pushing vega and vega-lite data to a browser >>> window over websockets, for REPL-based data science workflows >>> - Client side vega and vega-lite Reagent components, for more >>> dynamic usage from ClojureScript apps >>> - A grammar for composing Vega & Vega-Lite together in the context >>> of html as hiccup, for document and dashboard generation >>> - Plot/document publishing/sharing features via GitHub gists, the >>> IDL's live vega editor <http://vega.github.io/editor>, and the new >>> http://ozviz.io >>> >>> The last two features in particular are where Oz really brings some >>> interesting value to the table beyond the role of a minimal wrapper. I have >>> found the ability to create and quickly share visualizations and scientific >>> documents from the comfort of my favorite text editor and REPL a godsend. >>> While the first several years of my programming experience were in notebook >>> environments (Mathematica, MATLAB, Sage, etc), I now find the experience of >>> writing and executing code from a web application a burden. Part of my goal >>> with Oz was to create a viable alternative to this workflow, and so far >>> I've been very pleased. The last piece to this now in place (the >>> ability to share hiccup+vega documents via http://ozviz.io), I'm >>> excited to put this work out more broadly and hear what the community >>> thinks about this approach to the creation and sharing of scientific >>> documents. >>> >>> There are some other updates and improvements which those of you >>> familiar with Oz may wish to take a look at in the changelog, included >>> updated Vega* libs, and some smoothing out of the API and UI ( >>> https://github.com/metasoarous/oz/blob/master/CHANGELOG.md). Otherwise, >>> please see the project README for up to date information on how to use the >>> library: https://github.com/metasoarous/oz. >>> >>> >>> Thanks for your time! >>> >>> Chris >>> >>> >>> -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.