Skip to content

Instantly share code, notes, and snippets.

@rasmusto
Created February 4, 2014 16:36
Show Gist options
  • Save rasmusto/8807304 to your computer and use it in GitHub Desktop.
Save rasmusto/8807304 to your computer and use it in GitHub Desktop.
random graphs w/ rhizome (graphviz) visualization
(ns rhizome-fun.core
; [rhizome "0.2.0"]
(:require [rhizome.viz :refer [view-graph save-graph]]))
(def alpha-nodes (mapv (comp keyword str)
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"))
(defn random-from [nodes]
(let [n (rand-int (count nodes))
pick (nodes n)
[a b] (split-at n nodes)]
[pick (vec (concat a (drop 1 b)))]))
(defn pick-nodes [nodes]
(loop [picks [], nodes nodes, n (rand-int (count nodes))]
(cond (zero? n) picks
:else
(let [[pick remaining] (random-from nodes)]
(recur (conj picks pick) remaining (dec n))))))
(defn make-graph [nodes]
(for [node nodes
:let [picks (pick-nodes nodes)]]
[node picks]))
(let [nodes (pick-nodes alpha-nodes)
g (into {} (make-graph nodes))
cluster (fn [n] (rand-int (count nodes)))]
(save-graph (keys g) g
:node->descriptor (fn [n] {:label n})
:node->cluster cluster
:cluster->descriptor (fn [c] {:label c})
:filename "test.png"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment