Skip to content

Instantly share code, notes, and snippets.

@pinsterdev
Last active June 19, 2020 12:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pinsterdev/898435e2f8561941b628 to your computer and use it in GitHub Desktop.
Save pinsterdev/898435e2f8561941b628 to your computer and use it in GitHub Desktop.
Houses: asking price per sq.ft by region

Houses: asking price per sq.ft by region.

Select Table or Map and drag slider for Year/Quarter. Press Play for animation. Float over map to see regional figures. Raw data is here.

v0.6. Maps modified from Wikimedia Commons under CC BY-SA 3.0 license

<!DOCTYPE html>
<html><head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div id="chart"></div>
<div id="ctrls">
<div id="readme"/></div>
<strong>Display</strong>
<form name="buttons" action="">
<input type="radio" id="radio1" name="charttype" onclick="chartType(0)" checked>Table<br>
<input type="radio" id="radio2" name="charttype" onclick="chartType(1)">Map<br>
</form>
<br><br>
<input id="slider" type="range" min="0" max="10" oninput="sliderInput()">
<br>
<label id="period">period</label>
<br><br>
<button id="play" type="button" onclick="play()">Play</button>
</div>
<script src="//d3js.org/d3.v3.min.js"></script>
<script src="//labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"></script>
<script src="//cdn.rawgit.com/showdownjs/showdown/1.3.0/dist/showdown.min.js"></script>
<script src="/pinsterdev/raw/a2fcc47fae884342e190/util.js"></script>
<script src="https://api.github.com/gists/0f82dc8380acfd77299724369184a01d?callback=gistDataLoaded"></script>
<script src="main.js"></script>
</body>
</html>
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="725.75348"
height="922.53076"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
sodipodi:docname="dublin1.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.45254834"
inkscape:cx="671.81534"
inkscape:cy="449.1297"
inkscape:document-units="px"
inkscape:current-layer="dubg"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1278"
inkscape:window-height="768"
inkscape:window-x="2"
inkscape:window-y="22"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="dubg"
transform="translate(-8.9436891,-120.28534)">
<path
style="fill:#499920;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 332.56116,630.86025 c 0,0 35.35534,-28.72621 51.37573,-49.16602 16.02038,-20.4398 29.27864,-43.64174 29.27864,-43.64174 l -97.77961,0 17.12524,92.80776 z"
id="dublin-2"
inkscape:connector-curvature="0"
inkscape:label="#dublin-2" />
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 265.79724,360.03534 79.3925,-0.17857 2.0203,-103.57143 8.05148,0 0,-72.85714 -12.14285,-0.71429 -27.14286,-45 -74.28571,0.71429 -17.14286,-13.57143 -65.71429,0.71429 -32.14285,85 139.10714,149.46428 z"
id="dublin-11"
sodipodi:nodetypes="cccccccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path3136" />
<path
style="fill:#ff0000;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 171.6901,361.28534 96.42857,0 -140,-152.85714 32.85714,-83.57143 -148.571426,0.71429 -1.428571,332.85714 160.714287,0 0,-97.14286 z"
id="dublin-15"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path2164" />
<path
style="fill:#4cab00;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 224.72581,361.28535 121.42857,0.71429 0,130 -15,0 -106.42857,-130.71429 z"
id="dublin-7"
inkscape:connector-curvature="0"
inkscape:label="#path3140" />
<path
style="fill:#4c3aff;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 584.38967,121.00154 -57.85487,120.57887 151.0178,-2.57266 54.82442,-118.00621 -147.98735,0 z"
id="dublin-13"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
inkscape:label="#path3142" />
<path
style="fill:#e83a00;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 408.83295,183.4282 0,24.28572 35,0 0,32.41071 82.33259,0 39.81027,-81.69643 -147.14286,-0.71429 -10,25.71429 z"
id="dublin-17"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path3144" />
<path
style="fill:#459f13;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 355.26152,181.82106 0.71429,73.57143 -10,0 -0.71429,165.71428 97.14286,-85.71428 2.14286,-128.57143 -35.71429,0 0,-24.28572 -53.57143,-0.71428 z"
id="dublin-9"
inkscape:connector-curvature="0"
inkscape:label="#path3146" />
<path
style="fill:#459fd5;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 443.79947,239.94606 -0.32366,94.73214 189.28572,0 43.66071,-94.69865 -232.62277,-0.0335 z"
id="dublin-5"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
inkscape:label="#path3148" />
<path
style="fill:#453ad5;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 444.08121,333.78844 -99.85127,88.46342 86.04833,10.69742 154.80588,-0.25254 1.26269,-0.25255 46.71956,-99.24748 -188.98519,0.59173 z"
id="dublin-3"
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
inkscape:label="#dublin-3" />
<path
style="fill:#df0020;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 345.48859,421.52192 0.25254,68.69037 223.74879,0 16.66752,0 -0.25254,-57.32615 -154.3008,0 -86.11551,-11.36422 z"
id="dublin-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 13.11867,125.57106 212.85714,0 14.28571,12.85714 75.71429,0 25.71429,44.28571 68.57142,0 8.57143,-24.28571 147.14286,0 18.57143,-37.14286 148.57143,0 -147.14286,311.42858 0,57.85714 -253.57143,0 -105,-129.28571 -55.71428,0 0,97.14285 -160.000002,0 1.428572,-332.85714 z"
id="path2160"
sodipodi:nodetypes="cccccccccccccccccc"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:'Bitstream Vera Sans';fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="33.442329"
y="294.53311"
id="text4141"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4143"
x="33.442329"
y="294.53311"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start">15</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="196.36644"
y="236.16258"
id="text4157"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4159"
x="196.36644"
y="236.16258">11</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="367.85083"
y="256.08444"
id="text4161"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4163"
x="367.85083"
y="256.08444">9</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="513.16327"
y="196.70946"
id="text4165"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4167"
x="513.16327"
y="196.70946">17</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="570.19452"
y="217.80321"
id="text4169"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4171"
x="570.19452"
y="217.80321">13</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="467.46021"
y="277.95944"
id="text4173"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4175"
x="467.46021"
y="277.95944">5</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="432.30396"
y="386.94382"
id="text4177"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4179"
x="432.30396"
y="386.94382">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="365.11646"
y="477.56882"
id="text4181"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4183"
x="365.11646"
y="477.56882">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="318.78238"
y="463.77917"
id="text4185"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4187"
x="318.78238"
y="463.77917">7</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="35.750568"
y="307.41415"
id="text4189"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4191"
x="35.750568"
y="307.41415">Blanchardstown</tspan><tspan
sodipodi:role="line"
x="35.750568"
y="321.16415"
id="tspan4193">Castleknock</tspan><tspan
sodipodi:role="line"
x="35.750568"
y="334.91415"
id="tspan4195">Clonee</tspan><tspan
sodipodi:role="line"
x="35.750568"
y="348.66415"
id="tspan4197">Clonsilla</tspan><tspan
sodipodi:role="line"
x="35.750568"
y="362.41415"
id="tspan4199">Corduff</tspan><tspan
sodipodi:role="line"
x="35.750568"
y="376.16415"
id="tspan4201">Mulhuddart</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="239.04378"
y="179.52725"
id="text4203"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4205"
x="239.04378"
y="179.52725">Ballygall</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="193.27725"
id="tspan4207">Cappagh</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="207.02725"
id="tspan4209">Cremore</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="220.77725"
id="tspan4211">Dubber</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="234.52725"
id="tspan4213">Finglas</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="248.27725"
id="tspan4215">Jamestown</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="262.02725"
id="tspan4217">Kilshane</tspan><tspan
sodipodi:role="line"
x="239.04378"
y="275.77725"
id="tspan4219">Wadelai</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="368.31174"
y="267.91559"
id="text4221"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4223"
x="368.31174"
y="267.91559">Beaumont</tspan><tspan
sodipodi:role="line"
x="368.31174"
y="281.66559"
id="tspan4225">Drumcondra</tspan><tspan
sodipodi:role="line"
x="368.31174"
y="295.41559"
id="tspan4227">Elm Mount</tspan><tspan
sodipodi:role="line"
x="368.31174"
y="309.16559"
id="tspan4229">Griffith Ave.</tspan><tspan
sodipodi:role="line"
x="368.31174"
y="322.91559"
id="tspan4231">Santry</tspan><tspan
sodipodi:role="line"
x="368.31174"
y="336.66559"
id="tspan4233">Whitehall</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="277.71368"
y="373.9816"
id="text4235"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4237"
x="277.71368"
y="373.9816">Arbour Hill</tspan><tspan
sodipodi:role="line"
x="277.71368"
y="387.7316"
id="tspan4239">Cabra</tspan><tspan
sodipodi:role="line"
x="277.71368"
y="401.4816"
id="tspan4241">Phibsboro</tspan><tspan
sodipodi:role="line"
x="277.71368"
y="415.2316"
id="tspan4243">Four Courts</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="495.37"
y="256.86703"
id="text4245"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4247"
x="495.37"
y="256.86703">Artane</tspan><tspan
sodipodi:role="line"
x="495.37"
y="270.61703"
id="tspan4249">Harmonstown</tspan><tspan
sodipodi:role="line"
x="495.37"
y="284.36703"
id="tspan4251">Raheny</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="452.28067"
y="168.02106"
id="text4253"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4255"
x="452.28067"
y="168.02106">Belcamp</tspan><tspan
sodipodi:role="line"
x="452.28067"
y="181.77106"
id="tspan4257">Balgriffin</tspan><tspan
sodipodi:role="line"
x="452.28067"
y="195.52106"
id="tspan4259">Clonshaugh</tspan><tspan
sodipodi:role="line"
x="452.28067"
y="209.27106"
id="tspan4261">Priorswood</tspan><tspan
sodipodi:role="line"
x="452.28067"
y="223.02106"
id="tspan4263">Darndale</tspan><tspan
sodipodi:role="line"
x="452.28067"
y="236.77106"
id="tspan4265">Riverside</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="618.00879"
y="139.75249"
id="text4267"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4269"
x="618.00879"
y="139.75249">Baily</tspan><tspan
sodipodi:role="line"
x="618.00879"
y="153.50249"
id="tspan4271">Baldoyle</tspan><tspan
sodipodi:role="line"
x="618.00879"
y="167.25249"
id="tspan4273">Bayside</tspan><tspan
sodipodi:role="line"
x="618.00879"
y="181.00249"
id="tspan4275">Donaghmede</tspan><tspan
sodipodi:role="line"
x="618.00879"
y="194.75249"
id="tspan4277">Sutton</tspan><tspan
sodipodi:role="line"
x="618.00879"
y="208.50249"
id="tspan4279">Howth</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="461.11951"
y="345.2554"
id="text4281"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4283"
x="461.11951"
y="345.2554">Ballybough</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="359.0054"
id="tspan4285">Clonliffe</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="372.7554"
id="tspan4287">Clontarf</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="386.5054"
id="tspan4289">Dollymount</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="400.2554"
id="tspan4291">East Wall</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="414.0054"
id="tspan4293">Fairview</tspan><tspan
sodipodi:role="line"
x="461.11951"
y="427.7554"
id="tspan4295">Marino</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="653.36414"
y="344.15054"
id="text4297"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4299"
x="653.36414"
y="344.15054">Abbey St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="357.90054"
id="tspan4301">Amiens St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="371.65054"
id="tspan4303">Capel St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="385.40054"
id="tspan4305">Dorset St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="399.15054"
id="tspan4307">Henry St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="412.90054"
id="tspan4309">Mountjoy Sq.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="426.65054"
id="tspan4311">Marlboro St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="440.40054"
id="tspan4313">North Wall</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="454.15054"
id="tspan4315">O'Connell St.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="467.90054"
id="tspan4317">Parnell Sq.</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="481.65054"
id="tspan4319">Summerhill</tspan><tspan
sodipodi:role="line"
x="653.36414"
y="495.40054"
id="tspan4321">Talbot St.</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4430"
y="573.40784"
x="328.69418"
style="font-weight:bold;font-size:36px;line-height:125%"
xml:space="preserve"><tspan
y="573.40784"
x="328.69418"
id="tspan4432"
sodipodi:role="line">2</tspan></text>
<path
id="path4434"
d="m 355.7631,561.80685 0,-38.6699 317.0932,0 0,30.93592"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:10, 5;stroke-dashoffset:50;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4436"
d="m 387.25145,468.99909 260.74563,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:10, 5;stroke-dashoffset:49.99996948;stroke-opacity:1"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text4438"
y="579.70593"
x="634.375"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="579.70593"
x="634.375"
id="tspan4440"
sodipodi:role="line">Baggot St. LWR.</tspan><tspan
id="tspan4444"
y="593.45593"
x="634.375"
sodipodi:role="line">College Green</tspan><tspan
id="tspan4448"
y="607.20593"
x="634.375"
sodipodi:role="line">Dawson St.</tspan><tspan
id="tspan4450"
y="620.95593"
x="634.375"
sodipodi:role="line">Fitzwilliam Sq.</tspan><tspan
id="tspan4452"
y="634.70593"
x="634.375"
sodipodi:role="line">Harcourt St.</tspan><tspan
id="tspan4454"
y="648.45593"
x="634.375"
sodipodi:role="line">Kildare St.</tspan><tspan
id="tspan4456"
y="662.20593"
x="634.375"
sodipodi:role="line">Lord Edward St.</tspan><tspan
id="tspan4458"
y="675.95593"
x="634.375"
sodipodi:role="line">Merrion Sq.</tspan><tspan
id="tspan4460"
y="689.70593"
x="634.375"
sodipodi:role="line">Mount St. U. &amp; L.</tspan><tspan
id="tspan4462"
y="703.45593"
x="634.375"
sodipodi:role="line">Nassau St.</tspan><tspan
id="tspan4464"
y="717.20593"
x="634.375"
sodipodi:role="line">Pearse St.</tspan><tspan
id="tspan4466"
y="730.95593"
x="634.375"
sodipodi:role="line">St Stephens Gt.</tspan><tspan
id="tspan4468"
y="744.70593"
x="634.375"
sodipodi:role="line">Sth. Gt. Georges St.</tspan><tspan
id="tspan4470"
y="758.45593"
x="634.375"
sodipodi:role="line">Leeson St. U. &amp; L.</tspan><tspan
id="tspan4472"
y="772.20593"
x="634.375"
sodipodi:role="line" /></text>
<path
style="fill:#910020;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 413.28458,537.84532 c -21.29454,34.9271 -18.81306,33.68543 -48.68265,64.0125 l 49.6419,97.42012 -0.20905,0.10964 43.92833,65.14576 64.63299,-43.62746 0.41432,-126.43677 105.37548,-29.07148 0.75959,-27.41421 -215.86091,-0.1381 z"
id="dublin-4"
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4325" />
<path
style="fill:#ff9900;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 114.90486,522.58452 95.29369,80.93058 -53.03301,26.51651 1.51917,25.96407 110.07112,-37.01262 64.08155,7.73398 -17.67767,-89.76941 -31.21213,-16.02039 -44.19418,-45.02281 -51.37573,0.27621 0.27622,46.40388 -73.74903,0 z"
id="dublin-8"
sodipodi:nodetypes="cccccccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4474" />
<path
style="fill:#ff7efc;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 9.9436891,575.0651 72.9203869,19.33495 117.666984,0 -84.52135,-71.2631 -106.0660209,0 0,51.92815 z"
id="dublin-20"
inkscape:connector-curvature="0"
inkscape:label="#path4476" />
<path
style="fill:#00a800;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 10.267293,575.45573 74.806492,18.94432 0.778375,87.2835 4.745896,37.56505 35.969034,-17.64416 47.54225,22.97312 L 10.496116,867.29908 10.267293,575.45573 Z"
id="dublin-22"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4482" />
<path
style="fill:#517ee2;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 84.002441,594.43357 1.953125,86.73106 72.524004,-25.09211 -1.23315,-26.15532 55.76739,-25.53994 -14.3631,-11.60097 -114.648269,1.65728 z"
id="dublin-10"
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4478" />
<path
style="fill:#ff2400;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 85.839843,681.5614 185.253907,-64.35547 64.0625,9.375 -160.15625,206.25 -0.78125,-107.8125 -47.65625,-23.4375 -36.71875,18.75 -4.003907,-38.76953 z"
id="dublin-12"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4480" />
<path
style="fill:#00a7ed;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 174.14479,724.72546 173.73047,1041.8152 10.449219,1041.6199 10.742188,864.86218 174.14479,724.72546 Z"
id="dublin-24"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4484" />
<path
style="fill:#f3ff2a;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 174.93298,832.89796 158.73303,-205.9047 -13.19122,142.45918 -62.72012,44.70734 1.28867,50.83283 -84.75257,33.79482 0.64221,-65.88947 z"
id="dublin-6W"
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4486" />
<path
style="fill:#ff0000;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 320.11719,769.74499 95.11719,-68.9453 -50.39063,-98.82813 -30.46875,25.39062 -14.25781,142.38281 z"
id="dublin-6"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4488" />
<path
style="fill:#039323;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 257.8125,864.47155 0,-50 158.00781,-112.49999 42.48047,62.25585 -0.0976,104.54102 -61.09931,-0.41025 -35.4429,60.41225 -103.84842,-64.29888 z"
id="dublin-14"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4490" />
<path
style="fill:#f79423;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 654.68751,1041.8154 -101.17188,-174.60947 -155.46875,0 -67.87884,117.56961 -54.93203,56.88526 379.4515,0.1546 z"
id="dublin-18"
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4492" />
<path
style="fill:#ff0000;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 173.04688,1041.4247 0.87891,-143.75002 83.88671,-33.20312 104.29688,64.25781 -32.81251,56.83594 -52.73437,55.46879 -103.51562,0.3906 z"
id="dublin-16"
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
inkscape:label="#path4494" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 629.17433,537.82462 -315.625,0 -29.36974,-16.95663 -44.41494,-44.41494 -51.21532,0 0,46.52782 -178.124997,0 0,518.75003 643.749997,0 -100.93422,-174.82323 -95.24943,-0.0652 0.0743,-102.21109 64.05129,-44.72907 0,-125.82773 106.08422,-28.42518 0.97386,-27.82482 z"
id="path4323"
sodipodi:nodetypes="cccccccccccccccc"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start"
x="18.782524"
y="554.07288"
id="text2404"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2406"
x="18.782524"
y="554.07288">20</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:36px"
x="96.12233"
y="661.24371"
id="text2408"><tspan
sodipodi:role="line"
id="tspan2410"
x="96.12233"
y="661.24371">10</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="202.18835"
y="509.05005"
id="text2412"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2414"
x="202.18835"
y="509.05005">8</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.99999619px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-413.39008"
y="659.40759"
id="text2416"
sodipodi:linespacing="125%"
transform="matrix(0.5735764,-0.819152,0.819152,0.5735764,0,0)"><tspan
sodipodi:role="line"
id="tspan2418"
x="-413.39008"
y="659.40759">6w</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="504.91843"
y="577.27478"
id="text2420"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2422"
x="504.91843"
y="577.27478">4</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="504.91843"
y="918.6748"
id="text2424"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2426"
x="504.91843"
y="918.6748">18</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="299.41553"
y="825.86707"
id="text2428"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2430"
x="299.41553"
y="825.86707">14</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="201.0835"
y="923.09424"
id="text2432"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2434"
x="201.0835"
y="923.09424">16</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="68.500969"
y="871.16608"
id="text2436"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2438"
x="68.500969"
y="871.16608">24</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="254.66614"
y="654.83673"
id="text2440"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2442"
x="254.66614"
y="654.83673">12</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:36px;line-height:125%;font-family:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="335.9375"
y="735.17468"
id="text2444"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2446"
x="335.9375"
y="735.17468">6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="413.0687"
y="580.66046"
id="text3417"><tspan
sodipodi:role="line"
id="tspan3419"
x="413.0687"
y="580.66046">Ballsbridge</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="594.41046"
id="tspan3421">Donnybrook</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="608.16046"
id="tspan3423">Irishtown</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="621.91046"
id="tspan3425">Merrion</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="635.66046"
id="tspan3427">Pembroke</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="649.41046"
id="tspan3429">Ringsend</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="663.16046"
id="tspan3431">Sandymount</tspan><tspan
sodipodi:role="line"
x="413.0687"
y="676.91046"
id="tspan3433">Baggot St. UPR.</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="362.39224"
y="770.0719"
id="text3435"><tspan
sodipodi:role="line"
id="tspan3437"
x="362.39224"
y="770.0719"
style="font-weight:normal">Churchtown</tspan><tspan
sodipodi:role="line"
x="362.39224"
y="783.8219"
style="font-weight:normal"
id="tspan3439">Dundrum</tspan><tspan
sodipodi:role="line"
x="362.39224"
y="797.5719"
style="font-weight:normal"
id="tspan3441">Goatstown</tspan><tspan
sodipodi:role="line"
x="362.39224"
y="811.3219"
style="font-weight:normal"
id="tspan3445">Roebuck</tspan><tspan
sodipodi:role="line"
x="362.39224"
y="825.0719"
style="font-weight:normal"
id="tspan3449">Windy Arbour</tspan><tspan
sodipodi:role="line"
x="362.39224"
y="838.8219"
style="font-weight:normal"
id="tspan3451">Clonskeagh</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="428.13107"
y="899.89227"
id="text3453"><tspan
sodipodi:role="line"
id="tspan3455"
x="428.13107"
y="899.89227"
style="font-weight:normal">Cabinteely</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="913.64227"
style="font-weight:normal"
id="tspan3457">Carrickmines</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="927.39227"
style="font-weight:normal"
id="tspan3459">Foxrock</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="941.14227"
style="font-weight:normal"
id="tspan3461">Kilternan</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="954.89227"
style="font-weight:normal"
id="tspan3463">Sandyford</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="968.64227"
style="font-weight:normal"
id="tspan3465">Ticknock</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="982.39227"
style="font-weight:normal"
id="tspan3467">Ballyedmonduff</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="996.14227"
style="font-weight:normal"
id="tspan3469">Stepaside</tspan><tspan
sodipodi:role="line"
x="428.13107"
y="1009.8923"
style="font-weight:normal"
id="tspan3471">Leopardstown</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="209.92233"
y="941.87677"
id="text3473"><tspan
sodipodi:role="line"
id="tspan3475"
x="209.92233"
y="941.87677"
style="font-weight:normal">Ballinteer</tspan><tspan
sodipodi:role="line"
x="209.92233"
y="955.62677"
style="font-weight:normal"
id="tspan3477">Kilmashogue</tspan><tspan
sodipodi:role="line"
x="209.92233"
y="969.37677"
style="font-weight:normal"
id="tspan3479">Knoclyon</tspan><tspan
sodipodi:role="line"
x="209.92233"
y="983.12677"
style="font-weight:normal"
id="tspan3481">Rockbrook</tspan><tspan
sodipodi:role="line"
x="209.92233"
y="996.87677"
style="font-weight:normal"
id="tspan3483">Whitechurch</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="67.396118"
y="886.91022"
id="text3485"><tspan
sodipodi:role="line"
id="tspan3487"
x="67.396118"
y="886.91022"
style="font-weight:normal">Firhouse</tspan><tspan
sodipodi:role="line"
x="67.396118"
y="900.66022"
style="font-weight:normal"
id="tspan3489">Jobstown</tspan><tspan
sodipodi:role="line"
x="67.396118"
y="914.41022"
style="font-weight:normal"
id="tspan3491">Kilnamanagh</tspan><tspan
sodipodi:role="line"
x="67.396118"
y="928.16022"
style="font-weight:normal"
id="tspan3493">Oldbawn</tspan><tspan
sodipodi:role="line"
x="67.396118"
y="941.91022"
style="font-weight:normal"
id="tspan3495">Tallaght</tspan><tspan
sodipodi:role="line"
x="67.396118"
y="955.66022"
style="font-weight:normal"
id="tspan3497" /></text>
<text
xml:space="preserve"
style="font-weight:normal;font-size:36px"
x="26.516504"
y="692.17969"
id="text3499"><tspan
sodipodi:role="line"
id="tspan3501"
x="26.516504"
y="692.17969"
style="font-weight:bold">22</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="26.516504"
y="713.17188"
id="text3503"><tspan
sodipodi:role="line"
id="tspan3505"
x="26.516504"
y="713.17188"
style="font-weight:normal">Bawnogue</tspan><tspan
sodipodi:role="line"
x="26.516504"
y="726.92188"
style="font-weight:normal"
id="tspan3507">Clondalkin</tspan><tspan
sodipodi:role="line"
x="26.516504"
y="740.67188"
style="font-weight:normal"
id="tspan3509">Neilstown</tspan><tspan
sodipodi:role="line"
x="26.516504"
y="754.42188"
style="font-weight:normal"
id="tspan3511" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="100.54175"
y="618.15442"
id="text3513"><tspan
sodipodi:role="line"
id="tspan3515"
x="100.54175"
y="618.15442"
style="font-weight:normal">Ballyfermot</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="65.186409"
y="555.17773"
id="text3517"><tspan
sodipodi:role="line"
id="tspan3519"
x="65.186409"
y="555.17773"
style="font-weight:normal">Chapelizod</tspan><tspan
sodipodi:role="line"
x="65.186409"
y="568.92773"
style="font-weight:normal"
id="tspan3521">Palmerstown</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="206.33156"
y="519.26996"
id="text3523"><tspan
sodipodi:role="line"
id="tspan3525"
x="206.33156"
y="519.26996"
style="font-weight:normal">Dolphins Barn</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="533.01996"
style="font-weight:normal"
id="tspan3527">Inchicore</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="546.76996"
style="font-weight:normal"
id="tspan3529">Island Bridge</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="560.51996"
style="font-weight:normal"
id="tspan3531">Kilmainham</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="574.26996"
style="font-weight:normal"
id="tspan3533"> Merchants Qy.</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="588.01996"
style="font-weight:normal"
id="tspan3535"> Portobello</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="601.76996"
style="font-weight:normal"
id="tspan3537"> S.C.R.</tspan><tspan
sodipodi:role="line"
x="206.33156"
y="615.51996"
style="font-weight:normal"
id="tspan3539"> The Coombe</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="339.19028"
y="644.67096"
id="text3541"><tspan
sodipodi:role="line"
id="tspan3543"
x="339.19028"
y="644.67096"
style="font-weight:normal">Dartry</tspan><tspan
sodipodi:role="line"
x="339.19028"
y="658.42096"
style="font-weight:normal"
id="tspan3547">Ranelagh</tspan><tspan
sodipodi:role="line"
x="339.19028"
y="672.17096"
style="font-weight:normal"
id="tspan3549">Rathmines</tspan><tspan
sodipodi:role="line"
x="339.19028"
y="685.92096"
style="font-weight:normal"
id="tspan3551">Rathgar</tspan><tspan
sodipodi:role="line"
x="339.19028"
y="699.67096"
style="font-weight:normal"
id="tspan3553">Sandford</tspan><tspan
sodipodi:role="line"
x="339.19028"
y="713.42096"
style="font-weight:normal"
id="tspan3545" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:11px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="185.06311"
y="673.39716"
id="text3555"><tspan
sodipodi:role="line"
id="tspan3557"
x="185.06311"
y="673.39716"
style="font-weight:normal">Bluebell</tspan><tspan
sodipodi:role="line"
x="185.06311"
y="687.14716"
style="font-weight:normal"
id="tspan3561">Crumlin</tspan><tspan
sodipodi:role="line"
x="185.06311"
y="700.89716"
style="font-weight:normal"
id="tspan3563">Drimnagh</tspan><tspan
sodipodi:role="line"
x="185.06311"
y="714.64716"
style="font-weight:normal"
id="tspan3565">Walkinstown</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:bold;font-size:10.99999905px;font-family:Arial;fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-583.48975"
y="635.23395"
id="text3567"
transform="matrix(0.5735764,-0.819152,0.819152,0.5735764,0,0)"><tspan
sodipodi:role="line"
id="tspan3569"
x="-583.48975"
y="635.23395"
style="font-weight:normal">Domvilles/Wellington</tspan><tspan
sodipodi:role="line"
x="-583.48975"
y="648.98395"
id="tspan3571"
style="font-weight:normal">Rossmores, Glendowns</tspan><tspan
sodipodi:role="line"
x="-583.48975"
y="662.73395"
id="tspan3573"
style="font-weight:normal">Kimmage Rd. LWR., Wainsfort</tspan><tspan
sodipodi:role="line"
x="-583.48975"
y="676.48395"
id="tspan3575"
style="font-weight:normal">Harolds Cross Rd., Terenure Rd.</tspan></text>
</g>
</svg>
<div id="tabular">
<div id="tableft">
<table>
<thead>
<tr>
<th class="col1" width="90">County/City</th>
<th width="55">€/sq.ft.</th>
<th width="55">YoY chg</th>
</tr>
</thead>
<tbody/>
</table>
</div>
<div id="tabright">
<table>
<thead>
<tr>
<th class="col1" width="90">Post code</th>
<th width="55">€/sq.ft.</th>
<th width="55">YoY chg</th>
</tr>
</thead>
<tbody/>
</table>
<br><br><br>
<table>
<thead>
<tr>
<th class="col1" width="90">Region</th>
<th width="55">€/sq.ft.</th>
<th width="55">YoY chg</th>
</tr>
</thead>
<tbody/>
</table>
</div>
</div>
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
/* main layouts */
body {
font: 12px sans-serif;
width: 1000;
}
#chart {
width: 60%;
float: left;
}
#ctrls {
width: 40%;
float: left;
}
#period {
font-size: 36px;
}
#tableft, #tabright {
width: 260px;
float:left;"
}
/* data table */
#tabular {
width: 540;
margin:20px auto;
font-size: 12px;
}
#tabular table {
border-collapse: collapse;
table-layout:fixed;
}
#tabular td {
border-bottom: 1px solid lightgray;
}
#tabular th {
border-bottom: 2px solid lightgray;
}
#tabular td, th {
text-align: right;
}
#tabular td.col1, th.col1 {
text-align: left;
}
#tabular td.neg {
color: red;
}
#tabular td.pos {
color: green;
}
#tabular table tr:nth-child(odd) td{
background-color: #f0f0f0;
}
/* SVG transforms */
svg {
width: 640px;
height: 640px;
}
#layer1 {
display: inline;
transform: scale(1) translate(0px,1200px);
}
/* irl map defaults */
.region {
fill: #008000;
stroke: #000000;
stroke-width: 2;
}
.region:hover {
fill: green !important;
}
.ni {
fill: #a0a0a0;
}
/* tooltip */
.d3-tip {
line-height: 1;
padding: 12px;
background: rgba(0, 0, 0, 0.8);
color: #fff;
border-radius: 2px;
}
.d3-tip .h {
float: left;
white-space: nowrap;
}
.d3-tip .v {
float: left;
font-weight: bold;
}
.d3-tip .vm {
font-weight: bold;
color: #ff8080;
}
.d3-tip .vp {
font-weight: bold;
color: lightgreen;
}
/* Creates a small triangle extender for the tooltip */
.d3-tip:after {
box-sizing: border-box;
display: inline;
font-size: 10px;
width: 100%;
line-height: 1;
color: rgba(0, 0, 0, 0.8);
content: "\25BC";
position: absolute;
text-align: center;
}
/* Style northward tooltips differently */
.d3-tip.n:after {
margin: -1px 0 0 0;
top: 100%;
left: 0;
}
var
isFirefox = (typeof InstallTrigger !== 'undefined'),
tip = d3.tip().attr('class','d3-tip').offset(tipOffset).html(tipHtml),
tipData = null, savedChoice = -1, playing = false, mapSelector = "path.region",
elemMap, elemTable, xdata, ydata, mapData, tblData, colNames, rowName, qDub, qOth,
selectedPeriod, timer;
loadData();
/**
* Load a number of resources in parallel.
*/
function loadData() {
readme(document.getElementById("readme")); // async load readme
var loaded = new Object(), remaining = 3;
var load = function(d3Function, urlToLoad, resultName) {
d3Function(urlToLoad, function(error,d) {
if (error) throw error;
loaded[resultName] = d;
if (!--remaining) {
loadChart(loaded);
}
});
};
load(d3.text, "irlmap.svg", "map");
load(d3.text, "ireland_table.txt", "table");
load(d3.text, "sortedregion.csv", "regions");
}
/**
* Munge data and views after loading.
* @param loaded async loaded data
*/
function loadChart(loaded) {
// Munge loaded data into usable form
mungeData();
// Create SVG map elements and data table
(elemMap = document.createElement("div")).innerHTML = loaded.map;
(elemTable = document.createElement("div")).innerHTML = loaded.table;
// Create empty rows in the table view.
var regionRows = d3.csv.parseRows(loaded.regions)
var rows = d3.select(elemTable).selectAll("tbody").data(regionRows)
.selectAll("tr").data(function(d) { return d;})
.enter().append("tr").attr("id", function(d,i) {return d;});
// 3 columns per row
rows.insert("td").classed("col1", true);
rows.insert("td");
rows.insert("td");
// munge data for map and set up tooltip
mapData = d3.select(elemMap).selectAll(mapSelector)[0].map(function(d,j) {
var id = d.getAttribute("id");
return (id in xdata)? xdata[id] : {id: id, missing : true};
});
d3.select(elemMap).select("svg g").call(tip);
d3.select(elemMap).selectAll(mapSelector).data(mapData)
.on('mouseover', tip.show)
.on('mouseout', tip.hide);
// set up slider based on number of periods
var last = (typeof parseQueryString().p == 'undefined')?
colNames.length - 1 : parseQueryString().p;
d3.select("#slider").attr("max", colNames.length - 1).property("value", last);
selectedPeriod = colNames[last];
d3.select("#period").text(selectedPeriod);
// default to table
var ct = parseParamWithDefault('d',['table','map']);
document.buttons.charttype[ct].checked = true;
chartType(ct);
}
function sliderInput() {
selectedPeriod = colNames[d3.select("#slider").property("value")];
d3.select("#period").text(selectedPeriod);
displayChart();
}
function play() {
if (playing) {
playing = false;
d3.select("#play").text("Play");
clearInterval(timer);
} else {
playing = true;
d3.select("#play").text("Stop");
timer = setInterval(playStep, 750);
}
}
function playStep() {
selectedPeriod = colNames[d3.select("#slider").property("value")];
var slider = d3.select("#slider");
var period = +slider.property("value");
period = (period < (colNames.length - 1))? period + 1 : 0;
slider.property("value", period);
sliderInput();
}
function chartType(choice) {
if (choice == savedChoice) {
return;
}
savedChoice = choice;
d3.selectAll("#chart>*").remove();
var choices = [elemTable, elemMap]
d3.select("#chart").append(function(d) {return choices[choice];});
displayChart();
}
function displayChart() {
switch (savedChoice) {
case 0: displayTable(); break;
case 1: displayMap(); break;
}
}
function displayMap() {
d3.select(elemMap).selectAll(mapSelector).data(mapData)
.attr("style", function(d) {
return d.missing? "fill:#a0a0a0;" : d.quantize(d[selectedPeriod]);
});
document.querySelector(".d3-tip").innerHTML = tipHtml(tipData);
displayLegend();
}
function displayLegend() {
var numLeg = 4;
var svg = d3.select(elemMap).select("svg");
var qclass = ".legendo", legx = 2000, legt = "Ireland";
[qOth, qDub].forEach(function(quant) {
var dom = quant.domain(), step = ((dom[1]-dom[0])/numLeg)-0.1;
var legData = d3.range(dom[0],dom[1], step);
legData.push(legt);
legData.reverse();
var legend = svg.selectAll(".legend").data(legData)
.enter().append("g").attr("class", qclass).attr("transform",
function(d, i) {
return "translate(5," + (i * 40 + 400) + ")";
});
var sq = 36;
legend.append("rect").attr("x", legx).attr("width", sq).attr(
"height", sq).attr("style", function(d,i) {return i>0? quant(d) : "fill:#ffffff;"});
legend.append("text").attr("x", legx - 6).attr("y", 9).attr("dy",
"0.5em").style({"text-anchor": "end", "font-size": "36px"}).text(function(d,i) {
return i>0?'€'+d3.round(d,0) : d;
});
qclass = ".legendd";
legx = 2200;
legt = "Dublin";
});
}
function displayTable() {
d3.select(elemTable).selectAll("tr[id]").each(function(d, i){
var yoy = ydata[d][selectedPeriod];
d3.selectAll(this.childNodes)
.text(function(d, i) {
switch (i) {
case 0: return d;
case 1: return xdata[d][selectedPeriod];
case 2: return yoy;
}
})
.classed("neg",function(d, i) {return i == 2 && yoy.startsWith('-');})
.classed("pos",function(d, i) {return i == 2 && !yoy.startsWith('-');});
});
}
/**
* Html content for tooltip
* @param d data associated with moused-over svg element
* @returns html string
*/
function tipHtml(d) {
if (typeof(d) == 'undefined' || d === null) return;
tipData = d; // cache
if (d.missing) return d.id; // name only
var val = d[selectedPeriod];
var yoy = ydata[d.id][selectedPeriod];
var cls = yoy.charAt(0) != '-' ? "vp" : "vm"; // css for +/- colour
var s = "<div><div class='h'>#per#: <br>€/sq.ft: <br>YoY: </div><div " +
"class='v'>#id#<br>#val#<br><span class='#cls#'>#yoy#</span></div>";
return s.replace("#per#", selectedPeriod).replace("#id#", d.id)
.replace("#val#", val).replace("#cls#", cls).replace("#yoy#", yoy);
}
/**
* Workaround for a bug in Firefox whereby it ignores SVG scaling.
* Scaling adjustment is calculated and returned as an offset for
* displaying the d3 tooltip.
* @returns {Array} of vertical and horizontal offset
*/
function tipOffset() {
if (!isFirefox) return [0, 0];
var tbbox = this.getBBox();
var matrix = this.getScreenCTM();
var scale = 1.0; // TODO: hardcoded, must match CSS
var pt = {
// only works for default 'north' tooltip direction
x: tbbox.x + (tbbox.width / 2) + matrix.e,
y: tbbox.y + matrix.f
};
return [pt.y * (scale - 1), pt.x * (scale - 1)];
}
function mungeData() {
var sheet = extractGistData(gistData["MyhomeData.csv"].content);
colNames = sheet.colNames.filter(function (d) {
return d.indexOf(" Q") > -1;
});
rowName = sheet.rowName;
xdata = new Object();
ydata = new Object();
var yoy = d3.format("+.0f"); // formatter for yoy
var allValuesDub = [], allValuesOth = [];
sheet.data.forEach(function(d) {
var arr = d[rowName].startsWith("dublin-")? allValuesDub : allValuesOth;
for (i = 0; i < colNames.length; i++) {
arr.push(+d[colNames[i]]);
}
});
qDub = getQuantizeFunc(d3.min(allValuesDub),d3.max(allValuesDub), false);
qOth = getQuantizeFunc(d3.min(allValuesOth),d3.max(allValuesOth), true);
sheet.data.forEach(function(d) {
var id = d[rowName];
xdata[id]= {id : id, quantize : id.startsWith("dublin-")? qDub : qOth, missing: false};
ydata[id]= {id : id};
for (i = 0; i < colNames.length; i++) {
var c = colNames[i];
xdata[id][c] = d[c];
// calculate YoY for years after first
ydata[id][c] = (i < 4) ? "" : yoy(d[c] / d[colNames[i - 4]] * 100 - 100) + "%";
}
});
}
/**
* Quantize given range into white-red or white-blue color gradient
* @param min range minimum
* @param max range maximum
* @param redblue true/false for blue or red gradient
* @returns color gradient quantize function
*/
function getQuantizeFunc(min, max, redblue) {
var hex1 = d3.format("0x");
var hex = function(n) {
var s = hex1(255-n);
return s.length == 1? "0" + s : s;
};
return d3.scale.quantize()
.domain([min, max])
.range(d3.range(255).map(function(i) {
return redblue? "fill:#ff" + hex(i) + hex(i)+";" :
"fill:#" + hex(i) + hex(i)+"ff;";
}));
}
We can make this file beautiful and searchable if this error is corrected: It looks like row 2 should actually have 30 columns, instead of 22. in line 1.
carlow,cavan,clare,cork,cork-city,cork-west,donegal,dublin,galway,galway-city,kerry,kildare,kilkenny,laois,leitrim,limerick,limerick-city,longford,louth,mayo,meath,monaghan,offaly,roscommon,sligo,tipperary,waterford,westmeath,wexford,wicklow
dublin-1,dublin-2,dublin-3,dublin-4,dublin-5,dublin-6,dublin-6W,dublin-7,dublin-8,dublin-9,dublin-10,dublin-11,dublin-12,dublin-13,dublin-14,dublin-15,dublin-16,dublin-17,dublin-18,dublin-20,dublin-22,dublin-24
dublin-county,dublin-north,dublin-south,dublin-west
@pinsterdev
Copy link
Author

Project Diary

Requirement

Planning to do an Ireland chloropleth with historical asking prices. Slider controller allows scrolling through historical data by quarter, and Play button does it automatically.

Milestones

  1. Acquire map data: Mike Bostock has a fab article on how to make a map of anywhere in the world from open source map data and use it with D3. I was lazier than that, and just did a Google image search for "Ireland map SVG". Wikimedia Commons threw up some nice ones that could be easily cleaned up for the job at hand. See SVG images in the Gist above.
  2. Pah. Specs are boring. Bored smiley Why don't I just shut up and code. coder smiley
  3. Firefox has a nasty bug which causes it to miscalculate coordinate mappings for scaled SVG images. The upshot is that D3-tips tooltips appear in the wrong place. Trying to figure out a workaround.
  4. Finally figured out how to get data from Google Sheets using JSONP instead of an embedded CSV file in the Gist.

@Coles
Copy link

Coles commented Feb 12, 2016

What's up with that grey bit on the auld Ireland map?

@pinsterdev
Copy link
Author

That's the bad weather area of the country. Also not covered by myhome.ie.

@Coles
Copy link

Coles commented Feb 14, 2016

Looking good so far. I mightn't be able to contribute anything of value but I'll enjoy watching as it comes together.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment