Need help with datascope?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

205 Stars 7 Forks Apache License 2.0 32 Commits 1 Opened issues


Visualization of Clojure data structures using Graphviz

Services available


Need anything else?

Contributors list


A library that can be used to render typical Clojure data structures using Graphviz.

Clojars Project

API Documentation


Pretty printing can only take you so far; eventually a different visual representation is handy for really seeing how all you data is connected and related.

(require '[com.walmartlabs.datascope :as ds])

(ds/view {:missing nil :string "A scalar." :n 10 :enabled? true :vector [1 2 3 4] :sequence (iterate inc 1) :set #{:science-fiction :romance :military} :atom (atom {:foo :bar :empty {}}) :empty {}})

This will bring up a frame (care of Rhizome) that displays the following:


  • Maps, Sets, and Sequences have rounded edges, Vectors have square edges.

  • Composite types are labeled with their (abbreviated) type.

  • Refs, such as Atoms and Vars, are supported.

  • Sequences are abbreviated; Maps, Sets, and Vectors are always fully rendered.

  • Functions are rendered as their de-mangled Clojure name.

Using the rest of the Rhizome API, you can easily save the images to disk instead of viewing them in a frame.

And, remember, Clojure code is data:

(require '[com.walmartlabs.datascope :as ds])

(ds/view '(defn save [root-object file-name] (-> (dot root-object) viz/dot->image (viz/save-image file-name))))


Upcoming Features

  • Optional rendering of meta data

  • Depth limit on rendering

  • Open up more internal API to support rendering of more types

  • Rendering of JavaBeans


Copyright © 2016 Walmartlabs

Distributed under the terms of the Apache Software License 2.0.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.