Skip to content

A simple clojure wrapper around kumo to build wordclouds

License

Notifications You must be signed in to change notification settings

tirkarthi/clj-wordcloud

Repository files navigation

clj-wordcloud Clojars Project Build Status

A simple clojure wrapper around kumo to generate wordcloud

Leiningen

[xtreak/clj-wordcloud "0.0.1"]

Documentation

Documentation is generated by Codox and it's available at https://tirkarthi.github.io/clj-wordcloud/

Example

Given a map of element and the frequency the following image is generated. More examples/examples.clj.

Circle

(ns examples
  (:require [clj-wordcloud.core :refer :all]))

(def programming-languages ["Clojure" "Haskell" "Go" "Rust" "Scala" "Python" "Perl"
                            "Ruby" "Smalltalk" "PHP" "Java" "JavaScript"
                            "C" "C++" "Lisp" "Scheme" "Typescript" "D" "R" "Brainfuck" "Elixir"
                            "Erlang" "C#" "BASIC" "Logo" "Alice" "Dart" "Purescript" "Prolog"
                            "Ada" "F#" "Julia" "Kotlin" "Swift" "Delphi"])

(let [frequency-map (zipmap programming-languages (shuffle (range 300)))
      word-cloud    (word-cloud frequency-map
                                {:dimension  {:width  600
                                              :height 600}
                                 :background {:type  :circle
                                              :size  300
                                              :color "0x000000"}
                                 :font       {:type       "Calibre"
                                              :weight     :plain
                                              :scale-type :linear
                                              :x-scale    20
                                              :y-scale    20
                                              :padding    5}})]
  (write-to-file word-cloud "example_circle.png"))

Sample

Bitmaps

(ns examples
  (:require [clj-wordcloud.core :refer :all]))

(let [frequency-map (zipmap (range 100 150) (shuffle (range 300)))
      word-cloud    (word-cloud frequency-map
                                {:dimension  {:width  600
                                              :height 600}
                                 :background {:type   :pixel
                                              :size   300
                                              :color  "0x000000"
                                              :bitmap "examples/backgrounds/haskell_1.bmp"}
                                 :font       {:type       "Calibre"
                                              :weight     :plain
                                              :scale-type :linear
                                              :x-scale    20
                                              :y-scale    20
                                              :padding    5}})]
  (write-to-file word-cloud "example_haskell.png"))

Sample

TODO

  • API parity with Kumo
  • clojure.spec for docs and validation
  • Cool examples
  • Better tests

Contributing

Contributions are welcome. Please refer to CONTRIBUTING.md.

Stability

This library is still in early development phase and the API is subject to change. API design comments are welcome.

Thanks

Thanks to @kennycason for kumo without which this library is not possible

License

Copyright © 2018 Karthikeyan S

Distributed under the MIT License

About

A simple clojure wrapper around kumo to build wordclouds

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published