# D3js with LiveScript
This is the [D3.js Simple Barchart](http://bl.ocks.org/mbostock/3885304) rewritten in LiveScript.
d3 = window.d3
margin = top: 20, right: 20, bottom: 30, left: 40
width = 400 - margin.left - margin.right
height = 300 - margin.top - margin.bottom
x = d3.scale.ordinal!rangeRoundBands [0, width], 0.1
y = d3.scale.linear!range [height, 0]
xAxis = d3.svg.axis!
.scale x
.orient "bottom"
yAxis = d3.svg.axis!
.scale y
.orient "left"
.ticks 10, "%"
svg = d3.select "body" .append "svg"
.attr "width" width + margin.left + margin.right
.attr "height" height + margin.top + margin.bottom
.append "g"
.attr "transform", "translate(#{ margin.left },#{ margin.top })"
function type(d)
d.frequency = +d.frequency
d
d3.tsv "data.tsv" type, (error, data) ->
x.domain data.map (.letter)
y.domain [0, d3.max data, (.frequency)]
svg.append "g"
.attr "class" "x axis"
.attr "transform" "translate(0,#{ height })"
.call xAxis
svg.append "g"
.attr "class", "y axis"
.call yAxis
.append "text"
.attr "transform" "rotate(-90)"
.attr "y" 6
.attr "dy" ".71em"
.style "text-anchor" "end"
.text "Frequency"
svg.selectAll ".bar"
.data data
.enter!append "rect"
.attr "class" "bar"
.attr "x" -> x it.letter
.attr "width" x.rangeBand!
.attr "y" -> y it.frequency
.attr "height" -> height - y it.frequency
.bar {
fill: steelblue;
}
.bar:hover {
fill: brown;
}
.axis {
font: 10px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.x.axis path {
display: none;
}
doctype html
link(rel="stylesheet",href="style.css")
script(src="http://d3js.org/d3.v3.min.js")
body
h1 d3 bar chart in LiveScript
script(src="script.js")
letter frequency
A .08167
B .01492
C .02782
D .04253
E .12702
F .02288
G .02015
H .06094
I .06966
J .00153
K .00772
L .04025
M .02406
N .06749
O .07507
P .01929
Q .00095
R .05987
S .06327
T .09056
U .02758
V .00978
W .02360
X .00150
Y .01974
Z .00074