Integration of d3js with IPython (v1.0) Notebook. Details and examples are available at: http://nbviewer.ipython.org/urls/raw.github.com/z-m-k/ipyD3/master/ipyD3sample.ipynb
Maintained at: https://github.com/z-m-k/ipyD3 (pull requests are welcome).
Integration of d3js with IPython (v1.0) Notebook. Details and examples are available at: http://nbviewer.ipython.org/urls/raw.github.com/z-m-k/ipyD3/master/ipyD3sample.ipynb
Maintained at: https://github.com/z-m-k/ipyD3 (pull requests are welcome).
from __future__ import division | |
from titlecase import titlecase | |
import numpy | |
from uuid import uuid1 | |
class d3object: | |
def __init__(self, | |
height=100, | |
width=100, | |
topHtml='', | |
bottomHtml='', | |
style=None, | |
publish=False, | |
test=False, | |
precision=4, | |
d3=None, | |
phantomExec='phantomjs', | |
keepTempDir='', | |
**kw): | |
self.id='id-{0}'.format(uuid1()) | |
self.phantomExec = phantomExec | |
self.keepTempDir = keepTempDir | |
self.width=width | |
self.html='<div id="{0}" class="d3Output"></div>'.format(self.id) | |
self.css=[] | |
self.varsToPass={'width':width, | |
'height':height, | |
'd3ObjId':self.id, | |
} | |
self.precision=precision | |
self.js=[''' | |
var None=null; | |
var inf='Inf.'; | |
function utfDecode(x){ | |
try{ | |
var r = /[\\\\]{1,2}u([0-9a-fA-F]{4})/gi; | |
var xnew = x.replace(r, function (match, grp) { | |
return String.fromCharCode(parseInt(grp, 16)); | |
}); | |
xnew = unescape(xnew); | |
return xnew; | |
} | |
catch(err){ | |
return x | |
} | |
} | |
''',''] | |
if style in (None, ''): | |
self.html='{0}\n{1}\n{2}'.format(topHtml, self.html, bottomHtml) | |
elif style=='JFFigure': | |
self.html='\n'.join((self.html, | |
'''<div class="d3Output description figure" style="width: {0}px"> | |
<b>Figure{1}.{2}</b>{3}</div> | |
''' | |
.format(width, | |
' '+str(kw['number']) if 'number' in kw else '', | |
' '+titlecase(str(kw['title']))+'.' if 'title' in kw else '', | |
' '+str(kw['desc']) if 'desc' in kw else '', | |
), | |
)) | |
self.addCss(self.getStandardCss('jfCss')) | |
elif style=='JFTable': | |
self.html='\n'.join(('<div class="d3Output header" style="width: {0}px;">Table{1}</div>' | |
.format(width, ' '+str(kw['number']) if 'number' in kw else ''), | |
'<div class="d3Output title" style="width: {0}px;">{1}</div>' | |
.format(width, ' '+titlecase(str(kw['title'])) if 'title' in kw else ''), | |
'<div class="d3Output description" style="width: {0}px">{1}</div>' | |
.format(width, ' '+str(kw['desc']) if 'desc' in kw else ''), | |
self.html, | |
)) | |
self.addCss(self.getStandardCss('jfCss')) | |
elif style=='JFTableFigure': | |
self.html='\n'.join(('<div class="d3Output header" style="width: {0}px;">Figure{1}</div>' | |
.format(width, ' '+str(kw['number']) if 'number' in kw else ''), | |
'<div class="d3Output title" style="width: {0}px;">{1}</div>' | |
.format(width, ' '+titlecase(str(kw['title'])) if 'title' in kw else ''), | |
'<div class="d3Output description" style="width: {0}px">{1}</div>' | |
.format(width, ' '+str(kw['desc']) if 'desc' in kw else ''), | |
self.html, | |
)) | |
self.addCss(self.getStandardCss('jfCss')) | |
if d3!=None: | |
if d3.__class__.__name__=='d3object': | |
if d3.css[0]!='\n'+self.getStandardCss('jfCss') or len(d3.css)>1: | |
self.css=list(set(self.css) | set(d3.css)) | |
d3.addPageBreak() | |
self.html='\n'.join((d3.render(mode=('only','html')),self.html)) | |
else: | |
raise TypeError | |
self.publish=publish | |
if publish: | |
from IPython.display import HTML | |
html='<style>\n{0}\n</style>\n{1}'.format('\n'.join(self.css), self.html) | |
return HTML(html) | |
self.html='' | |
def removeTestObject(self): | |
from IPython.core.display import publish_javascript | |
publish_javascript('''$('#d3TestOutput').remove();''') | |
def convertVar(self, var): | |
typeVar=type(var) | |
if str(var)=='nan': | |
return None | |
elif typeVar==numpy.ndarray: | |
return self.convertVar(var.tolist()) | |
elif typeVar == float or typeVar == numpy.float64: | |
return round(var, self.precision) | |
elif typeVar == list: | |
return [self.convertVar(i) for i in var] | |
elif typeVar == dict: | |
outTemp={} | |
for k in var: | |
outTemp[k]=self.convertVar(var[k]) | |
return outTemp | |
elif typeVar in (str, int) or var==None: | |
return var | |
elif typeVar==long: | |
return int(var) | |
else: | |
print typeVar | |
raise TypeError | |
def addVar(self, **kw): | |
for k in kw: | |
self.varsToPass[k]=self.convertVar(kw[k]) | |
def getJsInputs(self): | |
jsInputs=[] | |
inputs=self.varsToPass | |
for i in inputs: | |
outTemp=i+'=' | |
typeOut=type(inputs[i]) | |
if typeOut == str: | |
outTemp+='"%s"' % inputs[i] | |
elif typeOut in (list, dict, int, float) or inputs[i]==None: | |
outTemp+=str(inputs[i]) | |
else: | |
print typeOut | |
raise TypeError | |
jsInputs.append(outTemp) | |
jsInputs='\n'.join(['var '+i+';' for i in jsInputs]).replace("u'", "'") | |
self.jsInputs=jsInputs | |
def addJs(self, jsStr): | |
if type(jsStr)!=str: | |
raise TypeError | |
self.js.append(jsStr) | |
def addCss(self, css): | |
if type(css)!=str: | |
raise TypeError | |
if type(css)==list: | |
for c in css: | |
self.addCss(c) | |
else: | |
self.css.append('{0}'.format(css)) | |
def pValsStar(self, dataAdd, index=0): | |
if len(dataAdd)==0: | |
return | |
for i in xrange(len(dataAdd[index])): | |
for j in xrange(len(dataAdd[index][0])): | |
if type(dataAdd[index][i][j])==str: continue | |
x=dataAdd[index][i][j] | |
if x<0: dataAdd[index][i][j]='Error' | |
elif x<=0.01: dataAdd[index][i][j]='★★★' | |
elif x<=0.05: dataAdd[index][i][j]='★★' | |
elif x<=0.1: dataAdd[index][i][j]='★' | |
elif x<=1: dataAdd[index][i][j]='' | |
else: dataAdd[index][i][j]='Error' | |
def addPanel(self, title=''): | |
html=u'''<div class="figtags panel description" style="width: {0}px">{1}</div>'''.format(self.width, title).replace('\n','') | |
self.addJs(''' $("#{0}").append('{html}');'''.format(self.id, html=html)) | |
return '-tag-{0}'.format(uuid1()) | |
def getUUID(self, x): | |
return '-{1}-{0}'.format(uuid1(), x) | |
def addTable(self, | |
data=[], | |
dataAdd=[], | |
pVals=False, | |
fontSizeCells=[12,8], | |
fontSizeCellsLabels=[16,10], | |
sRows=None, | |
sColumns=None, | |
sRowsMargins=[5], | |
sColsMargins=[5], | |
varLabels=['Value', 'p-value'], | |
fontSizeHeaders=12, | |
shrinkHeadersBorders=1.5, | |
heatmapIgnoreText=1, | |
heatmap={ | |
'draw':1, | |
'spacing':2, | |
'fillProportion':5, | |
'addText':1, | |
'addTextRows':1, | |
'addBorders':1, | |
'addOutsideBorders':-1, | |
'rectWidth':45, | |
'rectHeight':45, | |
}, | |
smallHeatmap={ | |
'draw':1, | |
'spacing':0, | |
'fillProportion':4, | |
'addText':0, | |
'addTextRows':0, | |
'addBorders':0, | |
'addOutsideBorders':-1, | |
'rectWidth':4, | |
'rectHeight':4, | |
}, | |
heatmapLegendVert=0, | |
legend= { | |
'draw':1, | |
'width':100, | |
'height':15, | |
'rectWidth':60, | |
'rectHeight':60 | |
}, | |
rightPaneOffset=100, | |
colorDomainMin=False, | |
colorDomainMax=False, | |
colorDomainSymmetric=False, | |
colorDomainAuto=1, | |
colorDomainAutoIgnoreColumns=[], | |
colorDomainAutoIgnoreRows=[], | |
colorDomainIgnoreColumns=[], | |
colorDomainIgnoreRows=[], | |
colorRange=['#B9FB8A', '#9BF293', '#7EE79D', '#65DCA6', '#51CFAD', '#43C3B1', '#3FB5B3', | |
'#43A7B2', '#4C99AD', '#568BA6', '#5F7D9C', '#656F8F', '#696181', '#6A5471', | |
'#684861', '#633D51', '#5B3341', '#522A33', '#472226', '#3B1B1A', '#2E1510'], | |
barSize=0.6 | |
): | |
figTag='-tag-{0}'.format(uuid1()) | |
if type(pVals)!=bool: | |
self.pValsStar(dataAdd, pVals) | |
if sRows==None: | |
sRows = ['' for _ in data[0]] | |
if sColumns==None: | |
sColumns = ['' for _ in data] | |
if colorRange != None: | |
colorDomain=[0,1] | |
if colorDomainAuto>0: | |
colorRangeData=data | |
if len(colorDomainAutoIgnoreColumns)+len(colorDomainAutoIgnoreRows)>0: | |
colorRangeData=[] | |
for i in xrange(len(data)): | |
if i in colorDomainAutoIgnoreRows: continue | |
for j in xrange(len(data[0])): | |
if j in colorDomainAutoIgnoreColumns: continue | |
colorRangeData.append(data[i][j]) | |
if colorDomainAuto==2: | |
avgRes=numpy.average(colorRangeData) | |
stdRes=numpy.std(colorRangeData, dtype=numpy.float64, ddof=1) | |
nObs=len(colorRangeData) | |
colorDomain=[max(numpy.min(colorRangeData),avgRes-stdRes/nObs*1.96), | |
min(numpy.max(colorRangeData),avgRes+stdRes/nObs*1.96)] | |
if colorDomainAuto==1: | |
colorDomain=[numpy.min(colorRangeData),numpy.max(colorRangeData)] | |
if colorDomainSymmetric: | |
colorDomain=max(numpy.fabs(colorDomain)) | |
colorDomain=[-colorDomain, colorDomain] | |
colorRange=list(reversed(colorRange))+colorRange[1:] | |
if colorDomainMin: | |
colorDomain=[colorDomainMin, colorDomain[1]] | |
if colorDomainMax: | |
colorDomain=[colorDomain[0], colorDomainMax] | |
colorRangeLen=len(colorRange) | |
colorDomain=(numpy.array([i/colorRangeLen for i in xrange(colorRangeLen+1)])*(colorDomain[1]-colorDomain[0])+colorDomain[0]).tolist() | |
else: | |
colorDomain=[] | |
colorRange=[] | |
self.addVar( figTag=figTag, | |
colorDomain=colorDomain, | |
colorRange=colorRange, | |
data=data, | |
dataAdd=dataAdd, | |
fontSizeCellsLabels=fontSizeCellsLabels, | |
fontSizeCells=fontSizeCells, | |
varLabels=varLabels, | |
sRows=sRows, | |
sColumns=sColumns, | |
heatmapLegendVert=heatmapLegendVert, | |
heatmap=heatmap, | |
smallHeatmap=smallHeatmap, | |
legend=legend, | |
fontSizeHeaders=fontSizeHeaders, | |
heatmapIgnoreText=heatmapIgnoreText, | |
sRowsMargins=sRowsMargins, | |
sColsMargins=sColsMargins, | |
shrinkHeadersBorders=shrinkHeadersBorders, | |
rightPaneOffset=rightPaneOffset, | |
colorDomainIgnoreColumns=colorDomainIgnoreColumns, | |
colorDomainIgnoreRows=colorDomainIgnoreRows, | |
colorDomainMin=colorDomainMin if colorDomainMin else 'false', | |
colorDomainMax=colorDomainMax if colorDomainMax else 'false', | |
barSize=barSize, | |
) | |
self.addCss(''' | |
.heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline { | |
fill: none; | |
stroke-width: 1px; | |
stroke: black; | |
shape-rendering: crispEdges !important; | |
} | |
.heatmapCell text, .heatmapCell rect, .d3Output rect { | |
font-size: 1em; | |
shape-rendering: crispEdges !important; | |
} | |
''') | |
self.addCss('#'+figTag+'{shape-rendering: crispEdges !important;}') | |
self.addJs(''' | |
Array.prototype.sum = function() { | |
return this.reduce(function(a,b){return a+b;}); | |
} | |
var svg = d3.select("#"+d3ObjId) | |
.append("svg") | |
.attr("width", width) | |
.attr("height", height) | |
.style("border-bottom", "1px solid black") | |
var color = d3.scale.linear() | |
.domain(colorDomain) | |
.range(colorRange); | |
function getColor(data){ | |
if(colorDomainMin!='false') | |
if(colorDomainMin>data) | |
return color(colorDomainMin); | |
if(colorDomainMax!='false') | |
if(colorDomainMax<data) | |
return color(colorDomainMax); | |
return color(data); | |
} | |
//_________________________________________________________________________________ | |
// | |
//Heatmap drawing function | |
//_________________________________________________________________________________ | |
function drawHeatmap(data, | |
x, | |
y, | |
spacing, | |
fillProportion, | |
addText, | |
addTextRows, | |
addBorders, | |
addOutsideBorders, | |
rectWidth, | |
rectHeight, | |
svg, | |
objId){ | |
var heatmap=svg.append("svg") | |
.attr("class", "heatmap") | |
.attr("y", y) | |
.attr("x", x) | |
.attr("id", objId) | |
var addLength = dataAdd.length; | |
if(heatmapIgnoreText==1) | |
var cumulHeight=rectHeight-fontSizeCells.sum()-(addLength+1)*2; | |
else | |
var cumulHeight=rectHeight-fillProportion-fontSizeCells.sum()-(addLength+1)*2; | |
var borderOffset=[0,0]; | |
if(addOutsideBorders>=0&&objId=='smallHeatmap') | |
borderOffset=[addOutsideBorders+1,addOutsideBorders+1]; | |
var bars = { | |
'row': 0, | |
'col': 0 | |
} | |
for(var i=0; i<data[0].length; i++){ | |
if(sColumns[0][i]=='|'){ | |
bars.col++; | |
} | |
bars.row=0; | |
for(var j=0; j<data.length; j++){ | |
if(sRows[0][j]=='|'){ | |
bars.row++; | |
continue | |
} | |
if(sColumns[0][i]=='|'){ | |
continue | |
} | |
if(addLength>0){ | |
if(dataAdd[0][j][i]=='Error'){ continue; } | |
if(addLength>1){ | |
if(dataAdd[1][j][i]=='Error'){ continue; } | |
} | |
} | |
var g=heatmap.append("g") | |
.attr("class", "heatmapCell") | |
.attr("transform", "translate("+ (borderOffset[0]+(i)*(rectWidth+spacing)-bars.col*barSize*rectWidth+addTextRows*(sRowsMargins.sum()+5)) +"," | |
+ (borderOffset[1]+(j)*(rectHeight+spacing)-bars.row*barSize*rectHeight+addTextRows*(sColsMargins.sum()+5)) + ")") | |
if(colorDomainIgnoreRows.indexOf(j)==-1 && colorDomainIgnoreColumns.indexOf(i)==-1) | |
g.append("rect") | |
.attr("y", rectHeight-fillProportion) | |
.attr("fill", getColor(data[j][i])) | |
.attr("id", "heatCell") | |
.attr("width", rectWidth) | |
.attr("height", fillProportion) | |
if(addText||addText==1){ | |
g.append("text") | |
.attr("x", rectWidth-5) | |
.attr("y",cumulHeight) | |
.attr("id", "heatText") | |
.attr("dy", fontSizeCells[0]+"px") | |
.style("font-size", fontSizeCells[0]+"px") | |
.attr("text-anchor", "end") | |
.text(data[j][i]); | |
for(var k=0; k<addLength; k++){ | |
g.append("text") | |
.attr("x", rectWidth-5) | |
.attr("y", cumulHeight+fontSizeCells.slice(0,k+1).sum()+(k+1)*2) | |
.attr("dy", fontSizeCells[k+1]+"px") | |
.attr("id", "heatTextAdd") | |
.style("font-size", fontSizeCells[k+1]+"px") | |
.attr("text-anchor", "end") | |
.text(dataAdd[k][j][i]); | |
} | |
} | |
if(addBorders||addBorders==1){ | |
g.append("polyline") | |
.attr("points", "0,0 "+rectWidth+",0 "+rectWidth+","+rectHeight+" 0,"+rectHeight+" 0,0") | |
} | |
} | |
} | |
if(addOutsideBorders>=0){ | |
var box = heatmap.append("rect") | |
.attr("fill", "none") | |
.attr("stroke", "#000") | |
.attr("stroke-widtx", "1px"); | |
if(objId=='heatmap') | |
box.attr("x", sRowsMargins.sum()+5-addOutsideBorders) | |
.attr("y", sColsMargins.sum()+5-addOutsideBorders) | |
.attr("width", data[0].length*(spacing+rectWidth)-spacing+2*addOutsideBorders) | |
.attr("height", data.length*(spacing+rectHeight)-spacing+2*addOutsideBorders); | |
else{ | |
box.attr("x", 1) | |
.attr("y", 1) | |
.attr("width", data[0].length*(spacing+rectWidth)-spacing+2*addOutsideBorders-1) | |
.attr("height", data.length*(spacing+rectHeight)-spacing+2*addOutsideBorders-1); | |
} | |
} | |
if(addTextRows||addTextRows==1){ | |
//Columns | |
for(var k=0; k<sColumns.length; k++){ | |
var z=0; | |
var bars = 0; | |
for(var i=0; i<data[0].length; i++){ | |
if(sColumns[0][i]=='|') bars++; | |
if(sColumns[k][i]==null){ | |
z++; | |
} | |
else if(sColumns[k][i]==''||sColumns[0][i]=='|'){ | |
z=0; | |
} | |
else{ | |
var g=heatmap.append("g") | |
.attr("class", "heatmapCell") | |
.attr("transform", "translate("+ ((i-z)*(rectWidth+spacing)+(sRowsMargins.sum()+5)-bars*barSize*rectWidth) +",0)"); | |
g.append("text") | |
.attr("x", (rectWidth/2)*(z+1)+z*spacing/2) | |
.attr("y", sColsMargins.sum()-sColsMargins.slice(0,k+1).sum()) | |
.style("font-size", fontSizeHeaders+"px") | |
.attr("text-anchor", "middle") | |
.text(sColumns[k][i]); | |
g.append("polyline") | |
.attr("points", ""+ (0+shrinkHeadersBorders) +","+ (sColsMargins.sum()-sColsMargins.slice(0,k+1).sum()+5) +" "+ (rectWidth*(z+1)+z*spacing-shrinkHeadersBorders) +"," +(sColsMargins.sum()-sColsMargins.slice(0,k+1).sum()+5)+""); | |
z=0; | |
} | |
} | |
} | |
//Rows | |
for(var k=0; k<sRows.length; k++){ | |
var z=0; | |
var bars = 0; | |
for(var j=0; j<data.length; j++){ | |
if(sRows[0][j]=='|') bars++; | |
if(sRows[k][j]==null){ | |
z++; | |
} | |
else if(sRows[k][j]==''||sRows[0][j]=='|'){ | |
z=0; | |
} | |
else{ | |
var g=heatmap.append("g") | |
.attr("class", "heatmapCell") | |
.attr("transform", "translate(0,"+ ((j-z)*(rectHeight+spacing)+(sColsMargins.sum()+5)-bars*barSize*rectHeight)+ ")"); | |
g.append("text") | |
.attr("x", sRowsMargins.sum()-sRowsMargins.slice(0,k+1).sum()) | |
.attr("y", 0.5*(rectHeight*(z+1)+(z)*spacing+fontSizeHeaders)) | |
.style("font-size", fontSizeHeaders+"px") | |
.attr("text-anchor", "end") | |
.text(sRows[k][j]); | |
g.append("polyline") | |
.attr("points", ""+ (sRowsMargins.sum()-sRowsMargins.slice(0,k+1).sum()+5) +","+ (0+shrinkHeadersBorders) + " " + (sRowsMargins.sum()-sRowsMargins.slice(0,k+1).sum()+5) +","+ ((z+1)*rectHeight+z*spacing-shrinkHeadersBorders) +""); | |
z=0; | |
} | |
} | |
} | |
} | |
} | |
//_________________________________________________________________________________ | |
// | |
//Legend for a heatmap | |
//_________________________________________________________________________________ | |
function drawLegend(legendSize, x, y, tickValues, colorDomain, color, svg){ | |
var legendcolorRangecale=d3.scale.linear() | |
.domain([0,legendSize[0]]) | |
.range([colorDomain[0], colorDomain[colorDomain.length-1]]), | |
legendObj=svg.append("svg") | |
//.attr("width", legendSize[0]+legendSize[2]) | |
//.attr("height", legendSize[1]+12) | |
.attr("y", y) | |
.attr("x", x) | |
for(var i=0; i<=legendSize[0]; i=i+legendSize[2]){ | |
legendObj.append("rect") | |
.attr("x", i-1) | |
.attr("fill", color(legendcolorRangecale(i))) | |
.attr("width", legendSize[2]) | |
.attr("height", legendSize[1]) | |
.attr("transform", "translate(5,0)") | |
} | |
var legendScale = d3.scale.linear() | |
.domain([colorDomain[0], colorDomain[colorDomain.length-1]]) | |
.range([0,legendSize[0]]); | |
var legendXAxis = d3.svg.axis() | |
.scale(legendScale) | |
.orient("bottom") | |
.tickSize(0,0,0) | |
.tickValues(tickValues) | |
legendObj.append("g") | |
.attr('class', 'axis') | |
.attr("transform", "translate(5," + legendSize[1] + ")") | |
.call(legendXAxis); | |
} | |
function drawLegendVert(legendSize, x, y, tickValues, colorDomain, color, svg){ | |
var legendcolorRangecale=d3.scale.linear() | |
.domain([0,legendSize[0]]) | |
.range([colorDomain[0], colorDomain[colorDomain.length-1]]), | |
legendObj=svg.append("svg") | |
//.attr("width", legendSize[0]+legendSize[2]) | |
//.attr("height", legendSize[1]+12) | |
.attr("y", y) | |
.attr("x", x) | |
.attr("id", "vertLegend") | |
if(heatmapLegendVert==1) | |
legendObj.style("opacity", 0.01) | |
for(var i=0; i<=legendSize[0]; i=i+legendSize[2]){ | |
legendObj.append("rect") | |
.attr("y", i-1) | |
.attr("fill", color(legendcolorRangecale(i))) | |
.attr("width", legendSize[1]) | |
.attr("height", legendSize[2]) | |
.attr("transform", "translate(5,0)") | |
} | |
var legendScale = d3.scale.linear() | |
.domain([colorDomain[0], colorDomain[colorDomain.length-1]]) | |
.range([5,legendSize[0]-5]); | |
var legendXAxis = d3.svg.axis() | |
.scale(legendScale) | |
.orient("right") | |
.tickSize(0,0,0) | |
.ticks(5) | |
legendObj.append("g") | |
.attr('class', 'axis') | |
.attr("transform", "translate("+(legendSize[1]*1.5)+"," + (0*legendSize[1]) + ")") | |
.call(legendXAxis); | |
} | |
function drawLegendBox(x, y, rectWidth, rectHeight, svg){ | |
var legendObj=svg.append("svg") | |
//.attr("width", legendSize[0]+legendSize[2]) | |
//.attr("height", legendSize[1]+12) | |
.attr("y", y-rectHeight) | |
.attr("x", x) | |
var addLength = dataAdd.length; | |
var cumulHeight=fontSizeCellsLabels.sum()+addLength*2; | |
var g=legendObj.append("g") | |
.attr("class", "heatmapCell") | |
g.append("rect") | |
.attr("x", 1) | |
.attr("y", rectHeight-heatmap.fillProportion/heatmap.rectHeight*rectHeight) | |
.attr("fill", colorRange[0]) | |
.attr("width", rectWidth-1) | |
.attr("height", heatmap.fillProportion/heatmap.rectHeight*rectHeight) | |
g.append("text") | |
.attr("x", rectWidth-5) | |
.attr("y", rectHeight-cumulHeight-5-heatmap.fillProportion) | |
.attr("dy", fontSizeCellsLabels[0]+"px") | |
.style("font-size", fontSizeCellsLabels[0]+"px") | |
.attr("text-anchor", "end") | |
.text(varLabels[0]); | |
for(var k=0; k<addLength; k++){ | |
g.append("text") | |
.attr("x", rectWidth-5) | |
.attr("y", rectHeight-5-heatmap.fillProportion-cumulHeight+fontSizeCellsLabels.slice(0,k+1).sum()+(k+1)*2) | |
.attr("dy", fontSizeCellsLabels[k+1]+"px") | |
.style("font-size", fontSizeCellsLabels[k+1]+"px") | |
.attr("text-anchor", "end") | |
.text(varLabels[k+1]); | |
} | |
g.append("polyline") | |
.attr("points", "1,1 "+ (rectWidth-1) +",1 "+ (rectWidth-1) +","+rectHeight+" 1,"+rectHeight+" 1,1") | |
} | |
var regressionResults=svg.append("g").attr('id', 'svgElement'+d3ObjId+figTag) | |
if(heatmap.draw==1){ | |
drawHeatmap(data/*data*/, | |
0/*x*/, | |
0/*y*/, | |
heatmap.spacing/*spacing*/, | |
heatmap.fillProportion/*fillProportion*/, | |
heatmap.addText/*addText*/, | |
heatmap.addTextRows/*addTextRows*/, | |
heatmap.addBorders/*addBorders*/, | |
heatmap.addOutsideBorders/*addOutsideBorders*/, | |
heatmap.rectWidth/*rectWidth*/, | |
heatmap.rectHeight/*rectHeight*/, | |
regressionResults,/*svg parent*/ | |
'heatmap'/*id*/) | |
} | |
var legendX=Math.round(sRowsMargins.slice(0,sRowsMargins.length-1).sum()/2+data[0].length*(heatmap.rectWidth+heatmap.spacing)+5+rightPaneOffset); | |
if(smallHeatmap.draw==1){ | |
drawHeatmap(data/*data*/, | |
legendX/*x*/, | |
Math.round(heatmap.addTextRows*(sColsMargins.sum()))/*y*/, | |
smallHeatmap.spacing/*spacing*/, | |
smallHeatmap.fillProportion/*fillProportion*/, | |
smallHeatmap.addText/*addText*/, | |
smallHeatmap.addTextRows/*addTextRows*/, | |
smallHeatmap.addBorders/*addBorders*/, | |
smallHeatmap.addOutsideBorders/*addOutsideBorders*/, | |
smallHeatmap.rectWidth/*rectWidth*/, | |
smallHeatmap.rectHeight/*rectHeight*/, | |
regressionResults,/*svg parent*/ | |
'smallHeatmap'/*id*/) | |
} | |
if(legend.draw==1){ | |
if(smallHeatmap.draw==1){ | |
drawLegend( [data[0].length*(smallHeatmap.rectWidth+smallHeatmap.spacing)-smallHeatmap.spacing-smallHeatmap.rectWidth,legend.height,1] /*legendSize*/, | |
Math.round(smallHeatmap.rectWidth/2+legendX-5+ Math.max(0,smallHeatmap.addOutsideBorders ))/*x*/, | |
Math.round((data.length)*(smallHeatmap.rectHeight+smallHeatmap.spacing)+sColsMargins.sum()+legend.height+5+2*Math.max(0,smallHeatmap.addOutsideBorders))/*y*/, | |
[colorDomain[1], colorDomain[colorDomain.length-2]]/*tickValues*/, | |
colorDomain/*colorDomain*/, | |
color/*color*/, | |
regressionResults/*svg*/); | |
} | |
drawLegendBox(legendX, | |
Math.round((data.length)*(heatmap.rectHeight+heatmap.spacing)+heatmap.spacing+1+sColsMargins.sum()), | |
Math.max(legend.rectWidth, data[0].length*(smallHeatmap.rectWidth+smallHeatmap.spacing)-smallHeatmap.spacing+Math.max(0,2*smallHeatmap.addOutsideBorders)), | |
legend.rectHeight, | |
regressionResults) | |
} | |
if(heatmapLegendVert==1||heatmapLegendVert==2) | |
drawLegendVert( [data.length*(heatmap.rectHeight+heatmap.spacing),legend.height,1] /*legendSize*/, | |
sRowsMargins.slice(0,sRowsMargins.length ).sum()+data[0].length*(heatmap.rectWidth+heatmap.spacing)+25/*x*/, | |
sColsMargins.sum()+5/*y*/, | |
[colorDomain[1], colorDomain[colorDomain.length-2]]/*tickValues*/, | |
colorDomain/*colorDomain*/, | |
color/*color*/, | |
regressionResults/*svg*/); | |
var boundingRect=document.getElementById('svgElement'+d3ObjId+figTag).getBoundingClientRect(); | |
var boundingRectParent=$(document.getElementById('svgElement'+d3ObjId+figTag)).parent()[0].getBoundingClientRect(); | |
regressionResults.attr("transform", "translate("+ ((width-boundingRect.width)/2-boundingRectParent.left) +","+ ((height-boundingRect.height)/2+boundingRectParent.top-boundingRect.top) + ")") | |
''') | |
def getPhantomJsScript(self, mode, renderTime=1000): | |
if 'html' in mode: | |
phantomJs=''' | |
var page = require('webpage').create(), | |
system = require('system'), | |
address, elementHtml; | |
address = system.args[1]; | |
page.viewportSize = { width: 600, height: 600 }; | |
page.open(address, function (status) { | |
if (status !== 'success') { | |
console.log('Unable to load the address!'); | |
} else { | |
window.setTimeout(function () { | |
elementHtml=page.evaluate(function() { | |
document.body.bgColor = 'white'; | |
return document.getElementById("d3OutputOutterContainer").innerHTML; | |
}); | |
console.log(elementHtml); | |
phantom.exit(1); | |
}, %s); | |
} | |
}); | |
''' % (renderTime) | |
elif 'png' in mode: | |
phantomJs=''' | |
var page = require('webpage').create(), | |
system = require('system'), | |
address, elementHtml; | |
address = system.args[1]; | |
page.viewportSize = { width: 1, height: 1 }; | |
page.open(address, function (status) { | |
if (status !== 'success') { | |
console.log('Unable to load the address!'); | |
} else { | |
window.setTimeout(function () { | |
console.log(page.renderBase64('PNG')); | |
phantom.exit(1); | |
}, %s); | |
} | |
}); | |
''' % (renderTime) | |
return phantomJs | |
def render(self, mode=['html'], fileName=None, renderTime=1000): | |
if type(mode) not in (list, tuple): | |
mode=(mode,) | |
self.getJsInputs() | |
html=['<style>', | |
'\n'.join(self.css), | |
'</style>', | |
'</head>', | |
'<body>', | |
'<div id="d3OutputOutterContainer">', | |
self.html, | |
'</div>', | |
'<script>', | |
self.js[0], | |
self.jsInputs,] + self.js[1:] + ['</script>' | |
] | |
if self.publish: | |
html='\n'.join(html) | |
from IPython.display import HTML | |
return HTML(html) | |
import tempfile | |
from os import unlink | |
import subprocess | |
from time import sleep | |
html=['<html>', | |
'<head>', | |
'<title></title>', | |
'<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>', | |
'<script src="http://d3js.org/d3.v3.min.js"></script>',] +\ | |
html +\ | |
['</body>', | |
'</html>',] | |
html='\n'.join(html) | |
if 'keepTemp' not in mode: | |
tempJs=tempfile.NamedTemporaryFile(mode="w+b", delete=False, suffix='.js') | |
temp=tempfile.NamedTemporaryFile(mode="w+b", delete=False, suffix='.htm') | |
else: | |
tempJs=open(self.keepTempDir+'//ipyD3_temp.js', "wb") | |
temp=open(self.keepTempDir+'//ipyD3_temp.htm', "wb") | |
tempJs.write(self.getPhantomJsScript(mode, renderTime)) | |
temp.write(html) | |
if 'keepTemp' not in mode: | |
temp.flush() | |
tempJs.flush() | |
tempJs.close() | |
temp.close() | |
phantomJsArgs = (self.phantomExec, tempJs.name, temp.name) | |
else: | |
tempJs.close() | |
temp.close() | |
phantomJsArgs = (self.phantomExec, self.keepTempDir+'//ipyD3_temp.js', self.keepTempDir+'//ipyD3_temp.htm') | |
phantomJsProc = subprocess.Popen( phantomJsArgs, stdout = subprocess.PIPE, stderr = subprocess.PIPE) | |
html = '' | |
err = '' | |
while phantomJsProc.poll() is None: | |
sleep( 0.1 ) | |
html, err = phantomJsProc.communicate() | |
if 'keepTemp' not in mode: | |
unlink(temp.name) | |
unlink(tempJs.name) | |
if 'html' in mode: | |
html=html.replace("&", "&").replace("use href=", "use xlink:href=") | |
if 'only' in mode: | |
return html | |
if 'file'in mode and fileName!=None: | |
html=['<html>', | |
'<head>', | |
'</head>', | |
'<style>', | |
'\n'.join(self.css), | |
'</style>', | |
html, | |
'</body>', | |
'</html>',] | |
fileOpen=open(fileName,'wb') | |
fileOpen.write('\n'.join(html)) | |
fileOpen.close() | |
return True | |
html='\n'.join(['<style>','\n'.join(self.css),'</style>'])+html | |
if 'show'in mode: | |
from IPython.display import HTML | |
return HTML(html) | |
return html | |
elif 'png' in mode: | |
if 'only' in mode: | |
return html | |
if 'file'in mode and fileName!=None: | |
fileOpen=open(fileName,'wb') | |
fileOpen.write(html) | |
fileOpen.close() | |
return True | |
if 'show'in mode: | |
from IPython.display import Image | |
return Image(data=html) | |
return html | |
def addSimpleTable(self, | |
data, | |
dataAdd=[], | |
pVals=False, | |
fontSizeCells=[], | |
sRows=[], | |
sColumns=[], | |
sRowsMargins=[5,100], | |
sColsMargins=[5,20], | |
fontSizeHeaders=9, | |
shrinkHeadersBorders=1.5, | |
spacing=0, | |
addBorders=1, | |
addOutsideBorders=-1, | |
rectWidth=45, | |
rectHeight=0, | |
barSize=0.6, | |
colorRange=None, | |
varLabels=[], | |
): | |
if len(fontSizeCells)==0: | |
fontSizeCells=[12]*(1+len(dataAdd)) | |
self.addTable(data=data, | |
dataAdd=dataAdd, | |
pVals=pVals, | |
fontSizeCells=fontSizeCells+[5], | |
fontSizeCellsLabels=fontSizeCells+[5], | |
sRows=sRows, | |
sColumns=sColumns, | |
sRowsMargins=sRowsMargins, | |
sColsMargins=sColsMargins, | |
varLabels=varLabels, | |
fontSizeHeaders=fontSizeHeaders, | |
shrinkHeadersBorders=shrinkHeadersBorders, | |
heatmapIgnoreText=1, | |
heatmap={ | |
'draw':1, | |
'spacing':spacing, | |
'fillProportion':0, | |
'addText':1, | |
'addTextRows':1, | |
'addBorders':addBorders, | |
'addOutsideBorders':addOutsideBorders, | |
'rectWidth':rectWidth, | |
'rectHeight':rectHeight if rectHeight>0 else int(sum(fontSizeCells)+10+2*len(dataAdd)), | |
}, | |
smallHeatmap={ | |
'draw':0, | |
'spacing':0, | |
'fillProportion':4, | |
'addText':0, | |
'addTextRows':0, | |
'addBorders':0, | |
'addOutsideBorders':-1, | |
'rectWidth':4, | |
'rectHeight':4, | |
}, | |
legend= { | |
'draw':min(len(varLabels),1), | |
'rectWidth': rectWidth, | |
'rectHeight':rectHeight if rectHeight>0 else int(sum(fontSizeCells)+10+2*len(dataAdd)), | |
}, | |
rightPaneOffset=min(len(varLabels),1)*120, | |
colorRange=colorRange, | |
barSize=barSize | |
) | |
def addPageBreak(self): | |
self.addJs('''$("#"+d3ObjId).append('<div style="page-break-after:always; display:block; width:1px; height:1px;"> </div>')''') | |
def getStandardCss(self, mode='jfCss'): | |
if mode=='jfCss': | |
return''' | |
body{ | |
font-family: "Lucinda Grande", "Lucinda Sans Unicode", Helvetica, Arial, Verdana, sans-serif; | |
} | |
.d3Output{ | |
min-height: 1.2em; | |
line-height: 1.2em; | |
position: relative; | |
font-size: 1em; | |
padding: 5px 0; | |
list-style: none; | |
background: #fff; | |
color: #000; | |
} | |
svg{ | |
color-rendering: optimizeQuality !important; | |
shape-rendering: geometricPrecision !important; | |
text-rendering: geometricPrecision !important; | |
} | |
.d3Output.header{ | |
text-align: center; | |
font-weight: bold; | |
border-bottom: none; | |
font-size: 0.9em; | |
} | |
.d3Output.title{ | |
text-align: center; | |
font-weight: bold; | |
border-bottom: none; | |
font-size: 1.2em; | |
} | |
.d3Output .description, .d3Output.description{ | |
font-size: 0.8em; | |
text-align:justify; | |
text-justify:inter-word; | |
border-bottom: 1px solid #000; | |
} | |
.d3Output .panel{ | |
text-align: center !important; | |
page-break-after:avoid; | |
} | |
svg, canvas { | |
border-bottom: 1px solid #000; | |
display: block; | |
margin: 5px 0; | |
} | |
.d3Output.description.figure{ | |
border-bottom: none; | |
} | |
''' |
{ | |
"metadata": { | |
"name": "" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"While Matplotlib is powerful, it requires a steep learning curve. Moreover, I found it often requires more lines of code for the type of visualisations I wish to produce than various *.js libriaries. Ever since I found out about IPython Notebook and d3js I wanted to combine the two and replace Matplotlib in my workflow. IPython offers a great interactive way of using Python. D3js coupled with developer tools in Chrome/Firefox does the same to graphics." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Due to security concerns there is currently no easy way to execute Javascript in a cell. With this script you can create the d3 code from within (I)Python but render them later on with PhantomJs. Becasue of that one can easily switch between producing interactive SVG visualisations by just copying the resulting HTML code from the rendered script file, or saving a static version in PNG, PDF, etc.\n", | |
"\n", | |
"The main ingredients are coded as a [class in Python](http://gist.github.com/4484816)\n", | |
"\n", | |
"Dependencies:\n", | |
"\n", | |
"* PhantomJs (in `PATH`)\n", | |
"* `titlecase`\n", | |
"* NumPy" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from ipyD3 import *\n", | |
"from IPython.display import display\n", | |
"d3 = d3object()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"All arguments are kwargs, and you can set:\n", | |
"\n", | |
"* `height` of your object\n", | |
"* `width` of your object\n", | |
"* html that will preceed yout object (`topHtml`)\n", | |
"* html that will follow yout object (`bottomHtml`)\n", | |
"* a predefined `style` that already includes `topHtml`, `botttomHtml`, and css\n", | |
"* weather to execute the scripts in your notebook (`publish`)\n", | |
"* how precise should be the data on conversion to Javascript variables (`precision`)\n", | |
"* path to the PhantomJs executable (`phantomExec`)\n", | |
"* path to directory where you want to permanently story otherwise temporary ipyD3 files (`keepTempDir`)\n", | |
"* previous `d3` objects if you wish to create a multi-page report" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"##Figures\n", | |
"\n", | |
"You start by initializing the object." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import numpy as np\n", | |
"d3 = d3object(width=800,\n", | |
" height=200,\n", | |
" style='JFFigure',\n", | |
" number=1,\n", | |
" d3=None,\n", | |
" precision=100,\n", | |
" title='Example figure with d3js',\n", | |
" desc='Standrad normal distribution')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Variables are passed through `addVar` function. It will convert the basic types to `Javascript`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.addVar(\n", | |
"interpolation1='basis',\n", | |
"interpolation2='step-before',\n", | |
"resolution=80,\n", | |
"domainRange=[-4,4],\n", | |
"imposeMax=0\n", | |
")" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"You can add your own `Javascript` and `CSS`. Note, that all variables specified with `addVar` are pasted at the beginning of the script, so if you need to change a variable's value within the script you need to use `addJs`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.addJs('''\n", | |
" var svg = d3.select(\"#\"+d3ObjId)\n", | |
" .append(\"svg\")\n", | |
" .attr(\"width\", width)\n", | |
" .attr(\"height\", height)\n", | |
" .append(\"g\").attr(\"id\", \"#\"+d3ObjId+'InnerG')\n", | |
"\n", | |
" // A formatter for counts.\n", | |
" var formatCount = d3.format(\",.0f\");\n", | |
" \n", | |
" var margin = {top: 10, right: 30, bottom: 30, left: 30},\n", | |
" width = width - margin.left - margin.right,\n", | |
" height = height - margin.top - margin.bottom;\n", | |
" \n", | |
" var x = d3.scale.linear()\n", | |
" //.domain(domainRange)\n", | |
" .range([0, width]);\n", | |
" \n", | |
" // Generate a histogram using twenty uniformly-spaced bins.\n", | |
" var xAxis = d3.svg.axis()\n", | |
" .ticks(4)\n", | |
" .scale(x)\n", | |
" .orient(\"bottom\");\n", | |
"\n", | |
" function appendHistogram(series, domainSeries, height, width, x_offset, y_offset, interpolation){\n", | |
" var svg2 = svg.append(\"g\")\n", | |
" y_offset=Math.round(y_offset)\n", | |
" height=Math.round(height)\n", | |
" height+=y_offset\n", | |
" width+=x_offset\n", | |
"\n", | |
" x.range([x_offset, width])\n", | |
" .domain(domainSeries)\n", | |
"\n", | |
" var data = d3.layout.histogram()\n", | |
" .bins(x.ticks(resolution))\n", | |
" .frequency(0)\n", | |
" (series);\n", | |
" \n", | |
" var seriesMax=d3.max([imposeMax, d3.max(data, function(d) { return d.y; })]);\n", | |
" var y = d3.scale.linear()\n", | |
" //.domain([0, d3.max(data, function(d) { return d.y; })])\n", | |
" .domain([0, seriesMax])\n", | |
" .range([height, y_offset]);\n", | |
" \n", | |
"\n", | |
" var area = d3.svg.area()\n", | |
" .interpolate(interpolation)\n", | |
" .x(function(d) { \n", | |
" if(interpolation==\"step-before\")\n", | |
" return x(d.x+d.dx/2)\n", | |
" return x(d.x); \n", | |
" })\n", | |
" .y0(height)\n", | |
" .y1(function(d) { return d3.max([y(d.y),y(seriesMax)]); });\n", | |
" \n", | |
" svg2.append(\"path\")\n", | |
" .datum(data)\n", | |
" .attr(\"class\", \"area\")\n", | |
" .attr(\"d\", area);\n", | |
" \n", | |
" svg2.append(\"g\")\n", | |
" .attr(\"class\", \"axis\")\n", | |
" .attr(\"transform\", \"translate(0,\" + height + \")\")\n", | |
" .call(xAxis);\n", | |
" \n", | |
" \n", | |
" }\n", | |
"\n", | |
"appendHistogram(data, domainRange, height, width/2-15, 10, 0, interpolation1)\n", | |
"appendHistogram(data, domainRange, height, width/2-15, width/2+20, 0, interpolation2)\n", | |
"''')\n", | |
"\n", | |
"d3.addCss('''\n", | |
" .polyline{\n", | |
" stroke: #000;\n", | |
" shape-rendering: crispEdges;\n", | |
" }\n", | |
" .area{\n", | |
" shape-rendering: geometricPrecision;\n", | |
" stroke: #000 !important;\n", | |
" stroke-width:1 !important;\n", | |
" fill: #ddd !important;\n", | |
" }\n", | |
" \n", | |
" .axis path, .axis line {\n", | |
" fill: none;\n", | |
" stroke: #000;\n", | |
" stroke-width: 1px;\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" text-rendering: geometricPrecision !important; \n", | |
" \n", | |
" }\n", | |
"''')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"E.g. dsitribution of standard normal. D3js allows for quick swtiching between histograms and approx. shape of the distribution.\n", | |
"\n", | |
"With too few observations:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.addVar(data=np.random.randn(1000))\n", | |
"html=d3.render(mode=('show','html'))\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .polyline{\n", | |
" stroke: #000;\n", | |
" shape-rendering: crispEdges;\n", | |
" }\n", | |
" .area{\n", | |
" shape-rendering: geometricPrecision;\n", | |
" stroke: #000 !important;\n", | |
" stroke-width:1 !important;\n", | |
" fill: #ddd !important;\n", | |
" }\n", | |
" \n", | |
" .axis path, .axis line {\n", | |
" fill: none;\n", | |
" stroke: #000;\n", | |
" stroke-width: 1px;\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" text-rendering: geometricPrecision !important; \n", | |
" \n", | |
" }\n", | |
"\n", | |
"</style>\r\n", | |
"<div id=\"id-c101381e-09b5-11e3-827a-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"200\"><g id=\"#id-c101381e-09b5-11e3-827a-b7e39e58f78aInnerG\"><g><path class=\"area\" d=\"M10,160L10.739583333333332,159.99999999999997C11.479166666666668,160,12.958333333333336,160,14.437500000000002,159.99999999999997C15.916666666666671,160,17.39583333333334,160,18.875000000000004,159.99999999999997C20.354166666666668,160,21.83333333333333,160,23.312499999999996,159.99999999999997C24.791666666666657,160,26.27083333333333,160,27.749999999999993,159.99999999999997C29.229166666666664,160,30.70833333333333,160,32.1875,159.99999999999997C33.666666666666664,160,35.14583333333333,160,36.625,159.99999999999997C38.104166666666664,160,39.583333333333336,160,41.0625,159.99999999999997C42.54166666666667,160,44.02083333333333,160,45.49999999999999,159.99999999999997C46.97916666666666,160,48.45833333333332,160,49.937499999999986,159.99999999999997C51.41666666666666,160,52.89583333333333,160,54.375,159.49685534591194C55.85416666666667,158.99371069182388,57.333333333333336,157.98742138364778,58.8125,156.9811320754717C60.29166666666667,155.9748427672956,61.77083333333334,154.9685534591195,63.25000000000001,153.96226415094338C64.72916666666667,152.95597484276732,66.20833333333334,151.9496855345912,67.6875,152.9559748427673C69.16666666666666,153.96226415094338,70.64583333333333,156.9811320754717,72.125,158.49056603773582C73.60416666666666,160,75.08333333333333,160,76.5625,158.99371069182388C78.04166666666666,157.98742138364778,79.52083333333333,155.9748427672956,81,153.9622641509434C82.47916666666667,151.9496855345912,83.95833333333334,149.93710691823898,85.4375,149.93710691823898C86.91666666666667,149.93710691823898,88.39583333333333,151.9496855345912,89.875,151.44654088050314C91.35416666666666,150.9433962264151,92.83333333333333,147.9245283018868,94.31249999999999,146.9182389937107C95.79166666666666,145.91194968553458,97.27083333333333,146.9182389937107,98.75,146.41509433962264C100.22916666666666,145.91194968553458,101.70833333333331,143.8993710691824,103.18749999999999,142.8930817610063C104.66666666666666,141.8867924528302,106.14583333333333,141.8867924528302,107.62499999999999,142.38993710691824C109.10416666666666,142.8930817610063,110.58333333333331,143.8993710691824,112.06249999999997,140.37735849056605C113.54166666666664,136.8553459119497,115.02083333333331,128.8050314465409,116.49999999999999,122.76729559748428C117.97916666666666,116.72955974842768,119.45833333333333,112.70440251572327,120.93749999999999,108.67924528301887C122.41666666666666,104.65408805031447,123.89583333333333,100.62893081761007,125.375,101.63522012578616C126.85416666666666,102.64150943396227,128.33333333333331,108.67924528301887,129.8125,112.70440251572327C131.29166666666666,116.72955974842769,132.77083333333331,118.74213836477989,134.25,105.66037735849058C135.72916666666666,92.57861635220127,137.20833333333331,64.40251572327044,138.6875,57.861635220125784C140.16666666666666,51.32075471698113,141.64583333333331,66.41509433962264,143.125,73.45911949685535C144.60416666666666,80.50314465408805,146.08333333333331,79.49685534591194,147.5625,75.97484276729558C149.04166666666666,72.45283018867924,150.52083333333331,66.41509433962264,152,62.893081761006286C153.47916666666666,59.37106918238994,154.95833333333331,58.36477987421384,156.4375,54.339622641509436C157.91666666666666,50.314465408805034,159.39583333333331,43.270440251572325,160.875,40.75471698113207C162.35416666666666,38.238993710691815,163.83333333333331,40.251572327044016,165.31249999999997,41.25786163522012C166.79166666666666,42.26415094339622,168.27083333333331,42.26415094339622,169.75,47.79874213836477C171.22916666666666,53.33333333333333,172.70833333333331,64.40251572327044,174.1875,65.40880503144655C175.66666666666666,66.41509433962264,177.14583333333331,57.35849056603774,178.62499999999997,57.35849056603774C180.10416666666666,57.35849056603774,181.58333333333331,66.41509433962264,183.0625,67.9245283018868C184.54166666666666,69.43396226415095,186.02083333333331,63.39622641509435,187.5,63.39622641509435C188.97916666666666,63.39622641509435,190.45833333333331,69.43396226415095,191.93749999999997,59.87421383647799C193.41666666666663,50.314465408805034,194.89583333333331,25.157232704402517,196.375,20.628930817610062C197.85416666666666,16.10062893081761,199.33333333333331,32.20125786163522,200.8125,46.28930817610063C202.29166666666669,60.37735849056604,203.77083333333334,72.45283018867924,205.25,72.45283018867924C206.72916666666669,72.45283018867924,208.20833333333331,60.37735849056604,209.6875,57.35849056603774C211.16666666666663,54.339622641509436,212.64583333333331,60.37735849056604,214.12499999999994,61.38364779874213C215.60416666666663,62.38993710691824,217.08333333333331,58.36477987421384,218.56249999999997,63.39622641509433C220.04166666666663,68.42767295597484,221.52083333333331,82.51572327044025,223,84.52830188679246C224.47916666666666,86.54088050314465,225.95833333333331,76.47798742138365,227.4375,77.48427672955975C228.91666666666666,78.49056603773585,230.39583333333331,90.56603773584906,231.87499999999997,96.60377358490568C233.35416666666663,102.64150943396228,234.8333333333333,102.64150943396228,236.31249999999994,99.62264150943398C237.79166666666663,96.60377358490567,239.27083333333331,90.56603773584906,240.75,94.59119496855347C242.22916666666666,98.61635220125787,243.70833333333331,112.70440251572327,245.1875,115.72327044025158C246.66666666666666,118.74213836477989,248.14583333333334,110.69182389937109,249.625,109.18238993710693C251.10416666666669,107.67295597484278,252.58333333333334,112.70440251572327,254.0625,115.22012578616352C255.54166666666666,117.73584905660377,257.0208333333333,117.73584905660377,258.5,117.73584905660377C259.97916666666663,117.73584905660377,261.4583333333333,117.73584905660377,262.9375,118.23899371069183C264.41666666666663,118.74213836477988,265.8958333333333,119.74842767295598,267.375,125.28301886792454C268.85416666666663,130.8176100628931,270.3333333333333,140.88050314465409,271.8125,143.39622641509433C273.29166666666663,145.91194968553458,274.7708333333333,140.88050314465409,276.25,141.38364779874215C277.72916666666663,141.88679245283018,279.2083333333333,147.9245283018868,280.6875,149.43396226415095C282.16666666666663,150.9433962264151,283.6458333333333,147.9245283018868,285.125,148.42767295597486C286.60416666666663,148.9308176100629,288.0833333333333,152.9559748427673,289.5625,154.46540880503144C291.04166666666663,155.9748427672956,292.5208333333333,154.9685534591195,294,154.46540880503144C295.47916666666663,153.9622641509434,296.9583333333333,153.9622641509434,298.4375,154.46540880503147C299.91666666666663,154.9685534591195,301.3958333333333,155.9748427672956,302.875,156.9811320754717C304.35416666666663,157.98742138364778,305.8333333333333,158.99371069182388,307.3125,158.9937106918239C308.79166666666663,158.99371069182388,310.2708333333333,157.98742138364778,311.75,157.48427672955975C313.22916666666663,156.9811320754717,314.7083333333333,156.9811320754717,316.1875,157.48427672955972C317.66666666666663,157.98742138364778,319.1458333333333,158.99371069182388,320.625,158.9937106918239C322.10416666666663,158.99371069182388,323.5833333333333,157.98742138364778,325.0625,157.98742138364778C326.54166666666663,157.98742138364778,328.0208333333333,158.99371069182388,329.5,159.49685534591194C330.97916666666663,160,332.4583333333333,160,333.9375,159.99999999999997C335.41666666666663,160,336.8958333333333,160,338.375,159.49685534591194C339.85416666666663,158.99371069182388,341.3333333333333,157.98742138364778,342.8125,157.98742138364778C344.29166666666663,157.98742138364778,345.7708333333333,158.99371069182388,347.25,159.49685534591194C348.72916666666663,160,350.2083333333333,160,351.6875,159.99999999999997C353.16666666666663,160,354.6458333333333,160,356.125,159.99999999999997C357.60416666666663,160,359.0833333333333,160,359.8229166666667,159.99999999999997L360.5625,160L360.5625,160L359.8229166666667,159.99999999999997C359.0833333333333,160,357.60416666666663,160,356.12499999999994,159.99999999999997C354.6458333333333,160,353.16666666666663,160,351.6875,159.99999999999997C350.2083333333333,160,348.72916666666663,160,347.25,159.99999999999997C345.7708333333333,160,344.29166666666663,160,342.81249999999994,159.99999999999997C341.3333333333333,160,339.85416666666663,160,338.375,159.99999999999997C336.8958333333333,160,335.41666666666663,160,333.9375,159.99999999999997C332.4583333333333,160,330.97916666666663,160,329.49999999999994,159.99999999999997C328.0208333333333,160,326.54166666666663,160,325.0625,159.99999999999997C323.5833333333333,160,322.10416666666663,160,320.625,159.99999999999997C319.1458333333333,160,317.66666666666663,160,316.18749999999994,159.99999999999997C314.7083333333333,160,313.22916666666663,160,311.75,159.99999999999997C310.2708333333333,160,308.79166666666663,160,307.3125,159.99999999999997C305.8333333333333,160,304.35416666666663,160,302.875,159.99999999999997C301.3958333333333,160,299.91666666666663,160,298.4375,159.99999999999997C296.9583333333333,160,295.47916666666663,160,294,159.99999999999997C292.5208333333333,160,291.04166666666663,160,289.5625,159.99999999999997C288.0833333333333,160,286.60416666666663,160,285.125,159.99999999999997C283.6458333333333,160,282.16666666666663,160,280.6875,159.99999999999997C279.2083333333333,160,277.72916666666663,160,276.25,159.99999999999997C274.7708333333333,160,273.29166666666663,160,271.8125,159.99999999999997C270.3333333333333,160,268.85416666666663,160,267.375,159.99999999999997C265.8958333333333,160,264.41666666666663,160,262.9375,159.99999999999997C261.4583333333333,160,259.97916666666663,160,258.5,159.99999999999997C257.0208333333333,160,255.54166666666666,160,254.0625,159.99999999999997C252.58333333333334,160,251.10416666666669,160,249.625,159.99999999999997C248.14583333333334,160,246.66666666666666,160,245.1875,159.99999999999997C243.70833333333331,160,242.22916666666666,160,240.74999999999997,159.99999999999997C239.27083333333331,160,237.79166666666663,160,236.31249999999994,159.99999999999997C234.8333333333333,160,233.35416666666663,160,231.87499999999997,159.99999999999997C230.39583333333331,160,228.91666666666666,160,227.43749999999997,159.99999999999997C225.95833333333331,160,224.47916666666666,160,223,159.99999999999997C221.52083333333331,160,220.04166666666663,160,218.56249999999997,159.99999999999997C217.08333333333331,160,215.60416666666663,160,214.12499999999997,159.99999999999997C212.64583333333331,160,211.16666666666663,160,209.6875,159.99999999999997C208.20833333333331,160,206.72916666666669,160,205.25,159.99999999999997C203.77083333333334,160,202.29166666666669,160,200.8125,159.99999999999997C199.33333333333331,160,197.85416666666666,160,196.375,159.99999999999997C194.89583333333331,160,193.41666666666663,160,191.93749999999997,159.99999999999997C190.45833333333331,160,188.97916666666666,160,187.49999999999997,159.99999999999997C186.02083333333331,160,184.54166666666666,160,183.0625,159.99999999999997C181.58333333333331,160,180.10416666666666,160,178.625,159.99999999999997C177.14583333333331,160,175.66666666666666,160,174.1875,159.99999999999997C172.70833333333331,160,171.22916666666666,160,169.75,159.99999999999997C168.27083333333331,160,166.79166666666666,160,165.3125,159.99999999999997C163.83333333333331,160,162.35416666666666,160,160.875,159.99999999999997C159.39583333333331,160,157.91666666666666,160,156.4375,159.99999999999997C154.95833333333331,160,153.47916666666666,160,152,159.99999999999997C150.52083333333331,160,149.04166666666666,160,147.5625,159.99999999999997C146.08333333333331,160,144.60416666666666,160,143.125,159.99999999999997C141.64583333333331,160,140.16666666666666,160,138.6875,159.99999999999997C137.20833333333331,160,135.72916666666666,160,134.25,159.99999999999997C132.77083333333331,160,131.29166666666666,160,129.8125,159.99999999999997C128.33333333333331,160,126.85416666666666,160,125.375,159.99999999999997C123.89583333333333,160,122.41666666666666,160,120.9375,159.99999999999997C119.45833333333333,160,117.97916666666666,160,116.49999999999999,159.99999999999997C115.02083333333331,160,113.54166666666664,160,112.06249999999997,159.99999999999997C110.58333333333331,160,109.10416666666666,160,107.625,159.99999999999997C106.14583333333333,160,104.66666666666666,160,103.18749999999999,159.99999999999997C101.70833333333331,160,100.22916666666666,160,98.75,159.99999999999997C97.27083333333333,160,95.79166666666666,160,94.3125,159.99999999999997C92.83333333333333,160,91.35416666666666,160,89.875,159.99999999999997C88.39583333333333,160,86.91666666666667,160,85.4375,159.99999999999997C83.95833333333334,160,82.47916666666667,160,81.00000000000001,159.99999999999997C79.52083333333333,160,78.04166666666666,160,76.56249999999999,159.99999999999997C75.08333333333333,160,73.60416666666666,160,72.125,159.99999999999997C70.64583333333333,160,69.16666666666666,160,67.6875,159.99999999999997C66.20833333333334,160,64.72916666666667,160,63.25000000000001,159.99999999999997C61.77083333333334,160,60.29166666666667,160,58.8125,159.99999999999997C57.333333333333336,160,55.85416666666667,160,54.375,159.99999999999997C52.89583333333333,160,51.41666666666666,160,49.937499999999986,159.99999999999997C48.45833333333332,160,46.97916666666666,160,45.49999999999999,159.99999999999997C44.02083333333333,160,42.54166666666667,160,41.0625,159.99999999999997C39.583333333333336,160,38.104166666666664,160,36.625,159.99999999999997C35.14583333333333,160,33.666666666666664,160,32.1875,159.99999999999997C30.70833333333333,160,29.229166666666664,160,27.749999999999993,159.99999999999997C26.27083333333333,160,24.791666666666657,160,23.312499999999996,159.99999999999997C21.83333333333333,160,20.354166666666668,160,18.875000000000004,159.99999999999997C17.39583333333334,160,15.916666666666671,160,14.437500000000002,159.99999999999997C12.958333333333336,160,11.479166666666668,160,10.739583333333332,159.99999999999997L10,160Z\"></path><g class=\"axis\" transform=\"translate(0,160)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(10,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-4</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(98.75,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(187.5,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">0</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(276.25,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(365,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">4</text></g><path class=\"domain\" d=\"M10,6V0H365V6\"></path></g></g><g><path class=\"area\" d=\"M392.21875,160V160H396.65625V160H401.09375V160H405.53125V160H409.96875V160H414.40625V160H418.84375V160H423.28125V160H427.71875V160H432.15625V160H436.59375V156.9811320754717H441.03125V153.9622641509434H445.46875V150.9433962264151H449.90625V160H454.34375V160H458.78125V153.9622641509434H463.21875V147.9245283018868H467.65625V153.9622641509434H472.09375V144.90566037735852H476.53125V147.9245283018868H480.96875V141.8867924528302H485.40625V141.8867924528302H489.84375V144.90566037735852H494.28125V120.75471698113209H498.71875V108.67924528301887H503.15625V96.60377358490567H507.59375V114.71698113207549H512.03125V120.75471698113209H516.46875V36.226415094339615H520.90625V81.50943396226415H525.34375V78.49056603773585H529.78125V60.37735849056604H534.21875V57.358490566037744H538.65625V36.226415094339615H543.09375V42.26415094339622H547.53125V42.26415094339622H551.96875V75.47169811320755H556.40625V48.301886792452834H560.84375V75.47169811320755H565.28125V57.358490566037744H569.71875V75.47169811320755H574.15625V0H578.59375V48.301886792452834H583.03125V84.52830188679246H587.46875V48.301886792452834H591.90625V66.41509433962264H596.34375V54.339622641509436H600.78125V96.60377358490567H605.21875V66.41509433962264H609.65625V102.64150943396228H614.09375V102.64150943396228H618.53125V84.52830188679246H622.96875V126.7924528301887H627.40625V102.64150943396228H631.84375V117.73584905660378H636.28125V117.73584905660378H640.71875V117.73584905660378H645.15625V120.75471698113209H649.59375V150.9433962264151H654.03125V135.8490566037736H658.46875V153.9622641509434H662.90625V144.90566037735852H667.34375V156.9811320754717H671.78125V153.9622641509434H676.21875V153.9622641509434H680.65625V156.9811320754717H685.09375V160H689.53125V156.9811320754717H693.96875V156.9811320754717H698.40625V160H702.84375V156.9811320754717H707.28125V160H711.71875V160H716.15625V160H720.59375V156.9811320754717H725.03125V160H729.46875V160H733.90625V160H738.34375V160H742.78125L742.78125,160H738.34375V160H733.90625V160H729.46875V160H725.03125V160H720.59375V160H716.15625V160H711.71875V160H707.28125V160H702.84375V160H698.40625V160H693.96875V160H689.53125V160H685.09375V160H680.65625V160H676.21875V160H671.78125V160H667.34375V160H662.90625V160H658.46875V160H654.03125V160H649.59375V160H645.15625V160H640.71875V160H636.28125V160H631.84375V160H627.40625V160H622.96875V160H618.53125V160H614.09375V160H609.65625V160H605.21875V160H600.78125V160H596.34375V160H591.90625V160H587.46875V160H583.03125V160H578.59375V160H574.15625V160H569.71875V160H565.28125V160H560.84375V160H556.40625V160H551.96875V160H547.53125V160H543.09375V160H538.65625V160H534.21875V160H529.78125V160H525.34375V160H520.90625V160H516.46875V160H512.03125V160H507.59375V160H503.15625V160H498.71875V160H494.28125V160H489.84375V160H485.40625V160H480.96875V160H476.53125V160H472.09375V160H467.65625V160H463.21875V160H458.78125V160H454.34375V160H449.90625V160H445.46875V160H441.03125V160H436.59375V160H432.15625V160H427.71875V160H423.28125V160H418.84375V160H414.40625V160H409.96875V160H405.53125V160H401.09375V160H396.65625V160H392.21875V160Z\"></path><g class=\"axis\" transform=\"translate(0,160)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(390,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-4</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(478.75,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(567.5,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">0</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(656.25,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(745,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">4</text></g><path class=\"domain\" d=\"M390,6V0H745V6\"></path></g></g></g></svg></div>\r\n", | |
"<div class=\"d3Output description figure\" style=\"width: 800px\">\r\n", | |
" <b>Figure 1. Example Figure With D3js.</b> Standrad normal distribution</div>\r\n", | |
" \r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x3393fb0>" | |
] | |
} | |
], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"And with just enough:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.addVar(data=np.random.randn(300000))\n", | |
"html=d3.render(mode=('show','html'))\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .polyline{\n", | |
" stroke: #000;\n", | |
" shape-rendering: crispEdges;\n", | |
" }\n", | |
" .area{\n", | |
" shape-rendering: geometricPrecision;\n", | |
" stroke: #000 !important;\n", | |
" stroke-width:1 !important;\n", | |
" fill: #ddd !important;\n", | |
" }\n", | |
" \n", | |
" .axis path, .axis line {\n", | |
" fill: none;\n", | |
" stroke: #000;\n", | |
" stroke-width: 1px;\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" text-rendering: geometricPrecision !important; \n", | |
" \n", | |
" }\n", | |
"\n", | |
"</style>\r\n", | |
"<div id=\"id-c101381e-09b5-11e3-827a-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"200\"><g id=\"#id-c101381e-09b5-11e3-827a-b7e39e58f78aInnerG\"><g><path class=\"area\" d=\"M10,159.8267677188307L10.739583333333332,159.8423142056023C11.479166666666668,159.8578606923739,12.958333333333336,159.88895366591711,14.437500000000002,159.90005829932542C15.916666666666671,159.9111629327337,17.39583333333334,159.90227922600707,18.875000000000004,159.87118625246384C20.354166666666668,159.84009327892065,21.83333333333333,159.78679103856086,23.312499999999996,159.7423725049277C24.791666666666657,159.69795397129457,26.27083333333333,159.66241914438802,27.749999999999993,159.6424308042531C29.229166666666664,159.6224424641182,30.70833333333333,159.6180006107549,32.1875,159.60023319730163C33.666666666666664,159.58246578384836,35.14583333333333,159.55137281030517,36.625,159.48030315649214C38.104166666666664,159.4092335026791,39.583333333333336,159.2981871685962,41.0625,159.17825712778668C42.54166666666667,159.05832708697716,44.02083333333333,158.92951333944103,45.49999999999999,158.80736237194986C46.97916666666666,158.6852114044587,48.45833333333332,158.5697232170125,49.937499999999986,158.46311873629293C51.41666666666666,158.3565142555734,52.89583333333333,158.25879348158045,54.375,158.00782876655313C55.85416666666667,157.75686405152584,57.333333333333336,157.35265539546415,58.8125,156.99730712639894C60.29166666666667,156.64195885733372,61.77083333333334,156.33547097526497,63.25000000000001,156.0356458732412C64.72916666666667,155.73582077121742,66.20833333333334,155.44265844923862,67.6875,155.0984148135817C69.16666666666666,154.75417117792477,70.64583333333333,154.35884622858975,72.125,153.89023069876C73.60416666666666,153.42161516893026,75.08333333333333,152.8797090586058,76.5625,152.2778379278766C78.04166666666666,151.67596679714737,79.52083333333333,151.01413064601337,81,150.199050553845C82.47916666666667,149.38397046167665,83.95833333333334,148.4156464284739,85.4375,147.41622942172793C86.91666666666667,146.41681241498196,88.39583333333333,145.38630243469282,89.875,144.23142056023082C91.35416666666666,143.0765386857688,92.83333333333333,141.797284917134,94.31249999999999,140.53357763527077C95.79166666666666,139.26987035340755,97.27083333333333,138.02170955831593,98.75,136.40487493406914C100.22916666666666,134.78804030982235,101.70833333333331,132.80253185642036,103.18749999999999,130.99025568418782C104.66666666666666,129.17797951195527,106.14583333333333,127.53893562089215,107.62499999999999,125.48013658699591C109.10416666666666,123.42133755309968,110.58333333333331,120.94278337637034,112.06249999999997,118.83512395547774C113.54166666666664,116.72746453458515,115.02083333333331,114.9906998695293,116.49999999999999,112.4832736459384C117.97916666666666,109.97584742234753,119.45833333333333,106.69775964022162,120.93749999999999,103.86163626774538C122.41666666666666,101.02551289526915,123.89583333333333,98.63135393244256,125.375,95.69306793260918C126.85416666666666,92.75478193277581,128.33333333333331,89.27236889593566,129.8125,86.10310652120931C131.29166666666666,82.93384414648295,132.77083333333331,80.07773243387044,134.25,77.45259709615036C135.72916666666666,74.82746175843029,137.20833333333331,72.43330279560269,138.6875,69.01973848589392C140.16666666666666,65.60617417618516,141.64583333333331,61.173204519595274,143.125,57.29990838678326C144.60416666666666,53.42661225397124,146.08333333333331,50.11298964493711,147.5625,47.21245939869141C149.04166666666666,44.311929152445714,150.52083333333331,41.82449126898845,152,39.23489075817491C153.47916666666666,36.64529024736137,154.95833333333331,33.953527109191555,156.4375,31.47497293246093C157.91666666666666,28.996418755730303,159.39583333333331,26.73107354043887,160.875,23.968240748455994C162.35416666666666,21.205407956473113,163.83333333333331,17.94508758779879,165.31249999999997,15.539823991562892C166.79166666666666,13.134560395326995,168.27083333333331,11.584353571529522,169.75,9.82982149301949C171.22916666666666,8.075289414509456,172.70833333333331,6.11643208128686,174.1875,4.994864107049433C175.66666666666666,3.8732961328120057,177.14583333333331,3.5890175175597485,178.62499999999997,3.2025762749512126C180.10416666666666,2.816135032342676,181.58333333333331,2.3275311623778614,183.0625,1.776741345326613C184.54166666666666,1.2259515282753644,186.02083333333331,0.6129757641376822,187.5,1.0504983204243576C188.97916666666666,1.4880208767110332,190.45833333333331,2.9760417534220664,191.93749999999997,4.157574748064263C193.41666666666663,5.33910774270646,194.89583333333331,6.214152855279821,196.375,7.19136059520946C197.85416666666666,8.1685683351391,199.33333333333331,9.247938702425017,200.8125,10.562727297966712C202.29166666666669,11.877515893508406,203.77083333333334,13.427722717305878,205.25,15.479858971158112C206.72916666666669,17.53199522501035,208.20833333333331,20.086060908917347,209.6875,22.633463812779375C211.16666666666663,25.180866716641408,212.64583333333331,27.72160684045847,214.12499999999994,30.420032758673266C215.60416666666663,33.11845867688806,217.08333333333331,35.974570389500585,218.56249999999997,39.47697176647567C220.04166666666663,42.97937314345076,221.52083333333331,47.1280641847884,223,50.60603536826524C224.47916666666666,54.084006551742085,225.95833333333331,56.89125787735813,227.4375,59.75181144333398C228.91666666666666,62.612365009309826,230.39583333333331,65.52622081564547,231.87499999999997,68.38899530830298C233.35416666666663,71.25176980096049,234.8333333333333,74.06346297993986,236.31249999999994,77.10169068044837C237.79166666666663,80.13991838095687,239.27083333333331,83.40468060299452,240.75,86.34518752951006C242.22916666666666,89.2856944560256,243.70833333333331,91.90194608701904,245.1875,94.72696482608782C246.66666666666666,97.55198356515662,248.14583333333334,100.58576941230075,249.625,103.43077649150376C251.10416666666669,106.27578357070679,252.58333333333334,108.93201188196869,254.0625,111.38391493851813C255.54166666666666,113.83581799506759,257.0208333333333,116.08339579690458,258.5,118.28211321174511C259.97916666666663,120.48083062658566,261.4583333333333,122.63068765442975,262.9375,124.81830043586213C264.41666666666663,127.00591321729449,265.8958333333333,129.23128175231514,267.375,131.14349962522223C268.85416666666663,133.05571749812933,270.3333333333333,134.65478470892288,271.8125,136.29382859998623C273.29166666666663,137.9328724910496,274.7708333333333,139.61189306238282,276.25,140.98442575164728C277.72916666666663,142.35695844091174,279.2083333333333,143.42300324810742,280.6875,144.4668387884865C282.16666666666663,145.51067432886563,283.6458333333333,146.53230060242817,285.125,147.37847366813975C286.60416666666663,148.22464673385133,288.0833333333333,148.89536659171196,289.5625,149.60384220316075C291.04166666666663,150.31231781460957,292.5208333333333,151.05854917964655,294,151.76702479109534C295.47916666666663,152.47550040254413,296.9583333333333,153.14622026040473,298.4375,153.74587046445225C299.91666666666663,154.3455206684998,301.3958333333333,154.8741012187343,302.875,155.27830987479598C304.35416666666663,155.68251853085764,305.8333333333333,155.96235529274648,307.3125,156.28216873490518C308.79166666666663,156.60198217706386,310.2708333333333,156.9617722994924,311.75,157.21051608783807C313.22916666666663,157.4592598761837,314.7083333333333,157.59695733044646,316.1875,157.8057244385223C317.66666666666663,158.0144915465981,319.1458333333333,158.29432830848697,320.625,158.4808861497462C322.10416666666663,158.66744399100546,323.5833333333333,158.76072291163507,325.0625,158.858443685628C326.54166666666663,158.95616445962094,328.0208333333333,159.0583270869772,329.5,159.16937342106007C330.97916666666663,159.28041975514293,332.4583333333333,159.40034979595245,333.9375,159.4714194497655C335.41666666666663,159.54248910357853,336.8958333333333,159.5646983703951,338.375,159.6024541239833C339.85416666666663,159.64020987757146,341.3333333333333,159.69351211793125,342.8125,159.72016323811116C344.29166666666663,159.74681435829103,345.7708333333333,159.74681435829103,347.25,159.7579189916993C348.72916666666663,159.7690236251076,350.2083333333333,159.79123289192418,351.6875,159.81566308542244C353.16666666666663,159.84009327892065,354.6458333333333,159.86674439910053,356.125,159.8534188390106C357.60416666666663,159.84009327892065,359.0833333333333,159.78679103856086,359.8229166666667,159.76013991838096L360.5625,159.73348879820108L360.5625,160L359.8229166666667,159.99999999999997C359.0833333333333,160,357.60416666666663,160,356.12499999999994,159.99999999999997C354.6458333333333,160,353.16666666666663,160,351.6875,159.99999999999997C350.2083333333333,160,348.72916666666663,160,347.25,159.99999999999997C345.7708333333333,160,344.29166666666663,160,342.81249999999994,159.99999999999997C341.3333333333333,160,339.85416666666663,160,338.375,159.99999999999997C336.8958333333333,160,335.41666666666663,160,333.9375,159.99999999999997C332.4583333333333,160,330.97916666666663,160,329.49999999999994,159.99999999999997C328.0208333333333,160,326.54166666666663,160,325.0625,159.99999999999997C323.5833333333333,160,322.10416666666663,160,320.625,159.99999999999997C319.1458333333333,160,317.66666666666663,160,316.18749999999994,159.99999999999997C314.7083333333333,160,313.22916666666663,160,311.75,159.99999999999997C310.2708333333333,160,308.79166666666663,160,307.3125,159.99999999999997C305.8333333333333,160,304.35416666666663,160,302.875,159.99999999999997C301.3958333333333,160,299.91666666666663,160,298.4375,159.99999999999997C296.9583333333333,160,295.47916666666663,160,294,159.99999999999997C292.5208333333333,160,291.04166666666663,160,289.5625,159.99999999999997C288.0833333333333,160,286.60416666666663,160,285.125,159.99999999999997C283.6458333333333,160,282.16666666666663,160,280.6875,159.99999999999997C279.2083333333333,160,277.72916666666663,160,276.25,159.99999999999997C274.7708333333333,160,273.29166666666663,160,271.8125,159.99999999999997C270.3333333333333,160,268.85416666666663,160,267.375,159.99999999999997C265.8958333333333,160,264.41666666666663,160,262.9375,159.99999999999997C261.4583333333333,160,259.97916666666663,160,258.5,159.99999999999997C257.0208333333333,160,255.54166666666666,160,254.0625,159.99999999999997C252.58333333333334,160,251.10416666666669,160,249.625,159.99999999999997C248.14583333333334,160,246.66666666666666,160,245.1875,159.99999999999997C243.70833333333331,160,242.22916666666666,160,240.74999999999997,159.99999999999997C239.27083333333331,160,237.79166666666663,160,236.31249999999994,159.99999999999997C234.8333333333333,160,233.35416666666663,160,231.87499999999997,159.99999999999997C230.39583333333331,160,228.91666666666666,160,227.43749999999997,159.99999999999997C225.95833333333331,160,224.47916666666666,160,223,159.99999999999997C221.52083333333331,160,220.04166666666663,160,218.56249999999997,159.99999999999997C217.08333333333331,160,215.60416666666663,160,214.12499999999997,159.99999999999997C212.64583333333331,160,211.16666666666663,160,209.6875,159.99999999999997C208.20833333333331,160,206.72916666666669,160,205.25,159.99999999999997C203.77083333333334,160,202.29166666666669,160,200.8125,159.99999999999997C199.33333333333331,160,197.85416666666666,160,196.375,159.99999999999997C194.89583333333331,160,193.41666666666663,160,191.93749999999997,159.99999999999997C190.45833333333331,160,188.97916666666666,160,187.49999999999997,159.99999999999997C186.02083333333331,160,184.54166666666666,160,183.0625,159.99999999999997C181.58333333333331,160,180.10416666666666,160,178.625,159.99999999999997C177.14583333333331,160,175.66666666666666,160,174.1875,159.99999999999997C172.70833333333331,160,171.22916666666666,160,169.75,159.99999999999997C168.27083333333331,160,166.79166666666666,160,165.3125,159.99999999999997C163.83333333333331,160,162.35416666666666,160,160.875,159.99999999999997C159.39583333333331,160,157.91666666666666,160,156.4375,159.99999999999997C154.95833333333331,160,153.47916666666666,160,152,159.99999999999997C150.52083333333331,160,149.04166666666666,160,147.5625,159.99999999999997C146.08333333333331,160,144.60416666666666,160,143.125,159.99999999999997C141.64583333333331,160,140.16666666666666,160,138.6875,159.99999999999997C137.20833333333331,160,135.72916666666666,160,134.25,159.99999999999997C132.77083333333331,160,131.29166666666666,160,129.8125,159.99999999999997C128.33333333333331,160,126.85416666666666,160,125.375,159.99999999999997C123.89583333333333,160,122.41666666666666,160,120.9375,159.99999999999997C119.45833333333333,160,117.97916666666666,160,116.49999999999999,159.99999999999997C115.02083333333331,160,113.54166666666664,160,112.06249999999997,159.99999999999997C110.58333333333331,160,109.10416666666666,160,107.625,159.99999999999997C106.14583333333333,160,104.66666666666666,160,103.18749999999999,159.99999999999997C101.70833333333331,160,100.22916666666666,160,98.75,159.99999999999997C97.27083333333333,160,95.79166666666666,160,94.3125,159.99999999999997C92.83333333333333,160,91.35416666666666,160,89.875,159.99999999999997C88.39583333333333,160,86.91666666666667,160,85.4375,159.99999999999997C83.95833333333334,160,82.47916666666667,160,81.00000000000001,159.99999999999997C79.52083333333333,160,78.04166666666666,160,76.56249999999999,159.99999999999997C75.08333333333333,160,73.60416666666666,160,72.125,159.99999999999997C70.64583333333333,160,69.16666666666666,160,67.6875,159.99999999999997C66.20833333333334,160,64.72916666666667,160,63.25000000000001,159.99999999999997C61.77083333333334,160,60.29166666666667,160,58.8125,159.99999999999997C57.333333333333336,160,55.85416666666667,160,54.375,159.99999999999997C52.89583333333333,160,51.41666666666666,160,49.937499999999986,159.99999999999997C48.45833333333332,160,46.97916666666666,160,45.49999999999999,159.99999999999997C44.02083333333333,160,42.54166666666667,160,41.0625,159.99999999999997C39.583333333333336,160,38.104166666666664,160,36.625,159.99999999999997C35.14583333333333,160,33.666666666666664,160,32.1875,159.99999999999997C30.70833333333333,160,29.229166666666664,160,27.749999999999993,159.99999999999997C26.27083333333333,160,24.791666666666657,160,23.312499999999996,159.99999999999997C21.83333333333333,160,20.354166666666668,160,18.875000000000004,159.99999999999997C17.39583333333334,160,15.916666666666671,160,14.437500000000002,159.99999999999997C12.958333333333336,160,11.479166666666668,160,10.739583333333332,159.99999999999997L10,160Z\"></path><g class=\"axis\" transform=\"translate(0,160)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(10,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-4</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(98.75,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(187.5,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">0</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(276.25,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(365,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">4</text></g><path class=\"domain\" d=\"M10,6V0H365V6\"></path></g></g><g><path class=\"area\" d=\"M392.21875,159.8267677188307V159.92004663946034H396.65625V159.89339551928043H401.09375V159.73348879820108H405.53125V159.6268843174815H409.96875V159.6135587573916H414.40625V159.52027983676197H418.84375V159.18714083451331H423.28125V158.8006995919049H427.71875V158.45423502956632H432.15625V158.16107270758752H436.59375V156.94844673940247H441.03125V156.02898309319622H445.46875V155.14949612725982H449.90625V153.9635212792547H454.34375V152.33780294828136H458.78125V150.3522944948794H463.21875V147.44732239527116H467.65625V144.35579245440366H472.09375V140.51803114849918H476.53125V136.7735487632243H480.96875V130.8170234030184H485.40625V125.89989172982902H489.84375V118.46422919964101H494.28125V113.25393520447344H498.71875V103.41967185809574H503.15625V96.23719496961598H507.59375V85.7899558590955H512.03125V77.2216207212579H516.46875V70.03914383277507H520.90625V56.740234863005384H525.34375V46.799367035902975H529.78125V39.33705338553119H534.21875V31.261763971021736H538.65625V24.46572832514744H543.09375V14.684767219124467H547.53125V10.034146747732052H551.96875V4.157574748064263H556.40625V3.3047389023074913H560.84375V1.8389272924130466H565.28125V0H569.71875V4.4640626301331H574.15625V7.089197967853181H578.59375V10.327309069710935H583.03125V14.97792954110335H587.46875V22.640126592824345H591.90625V30.262346964275537H596.34375V38.830682102113116H600.78125V51.27675522612604H605.21875V59.69850920297418H609.65625V68.44007662198112H614.09375V76.87515615891922H618.53125V86.66944282503216H622.96875V94.51819771801249H627.40625V103.6195552594449H631.84375V111.5882401932306H636.28125V118.3309735987416H640.71875V124.78054468227384H645.15625V131.4566502873358H649.59375V136.2538519197164H654.03125V141.29091363371606H658.46875V144.4890480553031H662.90625V147.55392687599073H667.34375V149.5660864495726H671.78125V151.80478054468355H676.21875V153.8169401182653H680.65625V155.4026817689688H685.09375V156.24219205463535H689.53125V157.32156242192096H693.96875V157.73465478470925H698.40625V158.57416507037584H702.84375V158.8540018322647H707.28125V159.16048971433344H711.71875V159.52027983676197H716.15625V159.58690763721168H720.59375V159.74681435829103H725.03125V159.74681435829103H729.46875V159.81344215874077H733.90625V159.89339551928043H738.34375V159.73348879820108H742.78125L742.78125,160H738.34375V160H733.90625V160H729.46875V160H725.03125V160H720.59375V160H716.15625V160H711.71875V160H707.28125V160H702.84375V160H698.40625V160H693.96875V160H689.53125V160H685.09375V160H680.65625V160H676.21875V160H671.78125V160H667.34375V160H662.90625V160H658.46875V160H654.03125V160H649.59375V160H645.15625V160H640.71875V160H636.28125V160H631.84375V160H627.40625V160H622.96875V160H618.53125V160H614.09375V160H609.65625V160H605.21875V160H600.78125V160H596.34375V160H591.90625V160H587.46875V160H583.03125V160H578.59375V160H574.15625V160H569.71875V160H565.28125V160H560.84375V160H556.40625V160H551.96875V160H547.53125V160H543.09375V160H538.65625V160H534.21875V160H529.78125V160H525.34375V160H520.90625V160H516.46875V160H512.03125V160H507.59375V160H503.15625V160H498.71875V160H494.28125V160H489.84375V160H485.40625V160H480.96875V160H476.53125V160H472.09375V160H467.65625V160H463.21875V160H458.78125V160H454.34375V160H449.90625V160H445.46875V160H441.03125V160H436.59375V160H432.15625V160H427.71875V160H423.28125V160H418.84375V160H414.40625V160H409.96875V160H405.53125V160H401.09375V160H396.65625V160H392.21875V160Z\"></path><g class=\"axis\" transform=\"translate(0,160)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(390,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-4</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(478.75,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">-2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(567.5,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">0</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(656.25,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">2</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(745,0)\"><line y2=\"6\" x2=\"0\"></line><text y=\"9\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">4</text></g><path class=\"domain\" d=\"M390,6V0H745V6\"></path></g></g></g></svg></div>\r\n", | |
"<div class=\"d3Output description figure\" style=\"width: 800px\">\r\n", | |
" <b>Figure 1. Example Figure With D3js.</b> Standrad normal distribution</div>\r\n", | |
" \r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x33a81f0>" | |
] | |
} | |
], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"While displaying the 'rendered' `svg` (which is what `('show', 'html')` does) is handy. Some prefer to get a `png`, although it tends to be of lower quality." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.addVar(data=np.random.randn(300000))\n", | |
"png=d3.render(mode=('show','png'))\n", | |
"display(png)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "iVBORw0KGgoAAAANSUhEUgAAAygAAAEGCAYAAACOzbGeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAASdAAAEnQB3mYfeAAAIABJREFUeJzt3XlcFfX+x/H3ERHcl6uGuyi4kJVLioFZWZlomWVZaeWWULZI+lNTU0u53dSuHbKugW3azcqWq5Vit9VMtJs3jUxLcMls4aqpZZaInN8fwMhBkO2c8z3L6/l4nIfOMMy8z5w5w3zmO98ZCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqxlbWBA6Hw+GJIAAAAAD8n81mO2sNUs1TQQAAAACgLBQoAAAAALwGBQoAAAAAr0GBAgAAAMBrUKAAAAAA8BoUKAAAAAC8BgUKAAAAAK9BgQIAAADAa1CgAAAAAPAa1U0HADzttdde09NPP60dO3bo119/tcZHR0fr008/VZcuXXT8+HFdfPHFmjNnjsLCwgymBQBUxk033aRffvlFbdu2lSQdOXJE27dvV0REhDXNt99+qwsvvFB/+ctfJEk7d+5UjRo1tGrVKhORARSgQEFA2L9/v5KTk/XMM8/ooosu0siRI9W9e/czpgsODlZwcLAyMzO1bds2XXDBBVq4cKFGjBhhIDUAoLz27t2r7Oxsa/jo0aO65pprdPXVV1vjtmzZooMHD1rDt99+u7p162YNr169WuvXr/dMYAClokCB30tOTtaaNWvUrVs3ffjhh6pfv36ZvxMZGanIyEhdd911mjhxonbs2KGkpCQPpAUAVNSRI0c0ePBgBQcHW+Pq1aun6Ohop+mKFiMAvBcFCvzWwYMHNWTIEEVERGjx4sWVns/ChQv10ksvacyYMXruuedcmBAA4AonTpzQzz//rE2bNpmOAsAFKFDgl1577TUlJCToqaeeOuMMWmWMGDFCr732mu66664qFTsAgKr76quvdMsttygkJESSdOrUKae+JVXx008/6aWXXrKGIyMj1atXL5fMG0D5UKDA77z66qt68cUXtXnzZpfO98Ybb9Qnn3yiFi1a6JtvvlHdunVdOn8AQPksX75c3bt319ChQ61xLVq0qPJ8L7vsMm3evFlvvPGGNW7r1q36z3/+o8aNG1d5/gDKhwIFfmXJkiX64IMP9MQTT7hl/n379tXrr7+uuLg4paWlUaQAgCFhYWE677zzXDrPWrVqafbs2U7jLrroIuXm5rp0OQDOjgIFfuPtt9/WihUrlJKS4tblnHPOOVq6dKnq16+vvLw8ty4LAGBWly5d1L17d1Wrlv/ouJMnT+rNN99UbGys4WSA/6JAgV/YvHmzZs6cqTfffNMjy7PZbFq/fr3Cw8O1Z88ejywTAOB5ycnJTs/M+uc//6m3336bAgVwI54kD5+XmZmpa6+91mPFSaFmzZpp7NixSkhI8OhyAQCeU6tWLYWFhVkvLu0F3I8WFPi07Oxs3XbbbcYerDV8+HBdfvnl2rVrl9q3b28kAwD4u2nTpmndunWy2WySpEOHDmn8+PGGUwFwFwoU+Kw9e/YoOjra+H3vp06dqokTJ2rVqlVGcwCAv1q4cKGee+4560GM1apVU/fu3Q2nAuAuFCjwSV9//bXi4uKMFyeS1L9/fz3zzDPauHGjLrroItNxAMDv2Gw2de/e3XruCQD/Rh8U+JysrCxdd911+vjjj01HsUydOlWTJk0yHQMAfF5GRoaaNWumOnXqWK8LLrhA1atzThUIFHzb4VN++uknjRkzRmvXrjUdxUmPHj1Uv359rVy5UkOGDDEdBwB81saNG9W3b1/NnDnTGhccHKygoCCDqQB4Ei0o8CkDBgzQlClTTMco0ZQpU2hFAQAXqF69umrVqmW9CvueAAgMFCjwGYsWLdL555+vqKgo01FK1KZNG/Xu3dvtD4oEAADwZ1ziBZ+Qk5OjSZMm6ZtvvjEd5azmzJmj/v37a8yYMZzxAwA/dejQIX399dfW8DnnnKPGjRsbTAT4FwoU+IRRo0bpb3/7m+kYZbLZbHrssccUGxur//znP6bjAABc7Morr9Tdd99tPX/L4XCoXr16+vzzzw0nA/wHBQq83rp167R7924lJSWZjlIuF1xwgfr376//+7//02OPPWY6DgDAhdq1a6e0tDRrOCcnR127djWYCPA/9EGB1xs7dqweeeQR0zEqZMyYMfrqq694eCMAAEAF0YICr7Zo0SJdf/31atu2rekoFbZ48WL16NFDu3fvVsOGDU3HAQCv9Omnn+q1116TzWaTJG3fvl3NmjUznKr8bDabQkNDlZiYaI2rVauWHnroIdWoUcNgMsB32cqawOFwODwRBCjuzz//VIMGDbR9+3bTUSotKytLU6ZM0datW01HAQCvFB4ergEDBjh1Mr/55ptVs2ZNg6kq5r///a8yMjKs4ffee0+jRo3SnXfeaTAV4L1shWckSkELCrzW/fffrxkzZpiOUSURERGKjo7WvHnzNHXqVNNxAMDr1KhRQ9dff73at29vOkql9ejRQz169LCG9+zZYzAN4PvogwKvtGvXLq1du1YjRowwHaXKEhMTNXv2bNMxAAAAfAIFCrzShAkTNG3aNNMxXCIkJERjxozxmbuQAQAAmESBAq+zbt06HTx4UFdccYXpKC5z//3366GHHjIdAwAAwOtRoMDrJCYmavr06aZjuFRQUJDGjx/PpV4AAABloJM8vMpLL72kNm3aqEuXLqajuFxiYqLat2+vhx9+2HQUADAmIyNDv/32mzWck5NjMA0Ab0SBAq+yaNEiPfnkk6ZjuM3999+vBx98kP4oAALS5s2bNXr0aKdbCPfu3VvNmzc3mAqAt6FAgddYsmSJwsPD1ahRI9NR3Oaee+5Rp06dNHv2bAUHB5uOAwAedejQIf3lL3/Rc889ZzoKAC9GHxR4jfnz5+uOO+4wHcPtZs6cqccee8x0DACAm7Rq1UqPP/64oqOjFR0drZ49e2rhwoWmYwE+gxYUeIWVK1eqXbt2Cg8PNx3F7UaMGKH27dv7zW2UAQDORo8erQsvvNAa/vHHH2W32zVx4kSDqQDfQQsKvMK8efMCovWkUEJCgubPn286BgDADapXr65u3bpZr86dOysoKMh0LMBnUKDAuPT0dOXm5qpHjx6mo3jMHXfcoQULFpiOAQAA4HUoUGDco48+GlCtJ5LUqFEjXXbZZXrhhRdMRwEAAPAqFCgwKjMzU19//bWuvPJK01E87o477tCjjz5qOgYAAIBXoUCBUfPmzdPYsWNNxzAiIiJCLVu21OrVq01HAQAA8BoUKDDmyJEjev3113XzzTebjmIMrSgAAADOKFBgzJIlSwL+lou9evXS8ePH9dlnn5mOAgAu9/zzz6tjx44699xzde6552r8+PEBcTt5AFVjK2sCh8Ph8EQQBBaHw6GgoCBlZWWZjmLc2rVr9f777+vNN980HQUAXOrKK6/UpZde6nSXxtatWys0NNRgKs/bvXu34uPj9fbbb1vjatWqRbGGgGWz2c5ag/CgRhgxd+5c3XvvvaZjeIUBAwborbfe0t69e9W2bVvTcQDAZapVq6YWLVqoQ4cOpqMYFRYWpqioKA0dOtQaFxwcrBdffFFdu3Y1mAzwThQoMCIpKUnbtm0zHcNrXHLJJUpKStIzzzxjOgoAwMVq1aqlJ554wmnc2LFj9fPPPxtKBHg3+qDA4wrv3FW9OvVxoZtuuklvvPGGDh8+bDoKAACAURQo8LikpCSNHz/edAyvk5CQwB29AABAwKNAgUclJyfrxhtvVO3atU1H8Trx8fGaP3++6RgAAABGUaDAo2g9Obu77rqLVhQAABDQKFDgMSkpKerfv78aNWpkOorXGjdunObNm2c6BgAAgDH0UobHvPXWW5oxY4bpGF6tfv36GjhwoFJSUpSQkGA6DgCU259//qnJkydr586d1rjs7GzVrVvXYCoAvogCBR6xZMkS1atXT2FhYaajeL34+HiNGjWKAgWAT/nuu++0atUqzZkzxxpXt25ddevWzWAqAL6IAgUeMXPmTK1atcp0DJ/QqlUr9e7dW//617903XXXmY4DAOUWEhKivn37mo7hE3Jzc7Vs2TJt2LDBGjdu3Di1bt3aYCrAO9AHBW73j3/8Q1deeaWaNGliOorPGD16tKZPn246BgDATebPn69mzZrp+PHjOn78uLZv367bbrvNdCzAK9CCArebOXOm3nvvPdMxfEpERIQ6deqk5cuXa/jw4abjAABc7JxzztHdd99tDX/yySdavny5wUSA96AFBW5lt9t17bXXqkGDBqaj+JyJEydq2rRppmMAAAB4FAUK3GrmzJm6//77TcfwSS1atFCfPn20ZMkS01EAAAA8hgIFbjN//nwNHz6cp8ZXAa0oAAAg0NAHBW4za9YsbdmyxXQMn9awYUNdd911stvtSkxMNB0HACxZWVmaPn26goODJUnHjh3jmScAXIICBW7x1FNPacKECQoJCTEdxeclJiaqV69eFCgAvMq8efPkcDjUo0cPa1zPnj0NJgLgLyhQ4BZJSUn617/+ZTqGX6hZs6bGjh2rpKQkPfjgg6bjAIAkKSgoSBdccIGGDBliOgoAP0OBApd75ZVX1LNnTzVt2tR0FL+RmJioW2+9VTNmzJDNZjMdBwDgYjVr1tT//vc/jRgxwhrXqVMnPfDAA9ZldECgoJM8XG7hwoUaOXKk6Rh+Z8iQIRozZozpGAAAN+jZs6cSExPVo0cP65Wamqpdu3aZjgZ4HC0ocKnPPvtMubm56tatm+kofueGG27QDTfcoM8++0zR0dGm4wAAXKxv375Ow08//bShJIBZtKDApRYuXKhRo0aZjuG3kpKSdMcdd5iOAQAA4DYUKHCZ7OxsffTRR7r66qtNR/FbnTp1Uvfu3bVo0SLTUQAAANyCAgUus3DhQo0ePdp0DL83e/ZsTZo0SSdPnjQdBQAAwOXogwKXSU5O1tatW03HCAh//etfNXbsWC1btsx0FACAmzRo0ECJiYmqXbu2JOnkyZOaN2+eOnfubDgZ4F60oMAlFi9erBtuuEE1atQwHSUgDB06VL/99ps2bdpkOgoAwE3sdruuueYa9evXT/369VPt2rX197//3XQswO1oQYFL/Pvf/9a9995rOkZAGTRokObOnavVq1ebjgLAz+Xl5Wnw4MFOJ0VCQkL0+OOPG0zl/8LCwhQXF2cNHzlyRPv27TOYCPAMChRU2bvvvqvDhw+rbdu2pqMElH79+mnu3Lnas2ePwsPDTccB4MdOnjyp999/Xxs2bLDG2Ww2NWjQwGAqAP6KS7xQZY8//jgPZjRk5MiRWrhwoekYAAJEw4YNrRfFCQB3oUBBlWRmZiozM1OXXHKJ6SgBadSoUXryySdNxwAAAHAZChRUid1u12233WY6RkAbNWqUkpOTTccAAABwCQoUVFpeXp6efvpp3X777aajBLRRo0bJbrebjgEAAOASFCioNLvdzoMZvUCrVq3Uvn17vfPOO6ajAAAAVBkFCirNbrfTOd5L3H777dzuEwAA+AUKFFTKqlWr1LlzZ7Vo0cJ0FEjq06ePvv/+e+3YscN0FAAAgCrhOSiolMcff1zx8fGmY6CIkSNH6vHHH1dqaqrpKAD8QGZmpvLy8iRJOTk5cjgchhNBkg4ePKjPPvvMGm7evLlatWplMBHgerayJnCwR0IxO3bs0JQpU7hzlBeKiorSkSNHFBoaajoKAB/21ltvafz48apZs6Y1Ljo6WnPmzDGYCj///LMmTZqknJwca9yJEye0ZcsWBQcHG0wGVIzNZjtrDUKBggobN26cwsPDdfPNN5uOgmIWLlyoZs2aacaMGaajAPBh8+bN0969ezV58mTTUVAGTkzBF5VVoNAHBRWSk5OjZcuWUZx4qdGjR9NZHgAA+DQKFFTIokWLeO6JF2vYsKEuueQS/fOf/zQdBQAAoFIoUFAhTz75pG699VbTMXAWo0eP1mOPPWY6BgAAQKVQoKDcVq9erYiICO4W4uWioqJUq1YtrVu3znQUAACACqNAQbktWrRII0aMMB0D5TBq1ChaUQAAgE+iQEG57Nq1S99++6369u1rOgrK4YorrtBXX32l3bt3m44CAABQIRQoKJcnnniCzvE+ZsyYMfr73/9uOgYAAECF8CR5lMtTTz2lHTt2mI6BCrj11lvVqVMn2e12HuAFAH4qLy9P8+bNU/Xq+Yd01atX19SpUw2nAqqGFhSUafHixbrlllsUFBRkOgoq6M4779SCBQtMxwAAuMnSpUt14MAB/fTTT/rpp5/05ptvav78+aZjAVXCk+RRpt69e2vBggVq0aKF6SiooBMnTqh79+76448/TEcB4MW2bt2qd9991xpet26dWrVqxZl4H7RgwQK1adNGDzzwgOkoQKl4kjyqxG6369xzz6U48VEhISG67bbbuKMXgLOKi4vT9u3btXfvXu3du1etW7fW/fffbzoWgABFCwrOqlq1asrMzFQZhS682NGjR9WvXz8dPnzYdBQAXiosLEyrVq1SkyZNTEdBFdGCAl9ACwoqbeLEiZo+fTrFiY+rX7++Bg8erH/84x+mowAAAJSJAgUl2r9/v1599VWNGTPGdBS4wF133aW5c+eajgEAAFAmChSUaMKECZo+fbrpGHCRpk2b6pJLLtHzzz9vOgoAAMBZUaDgDOnp6dq3b5/i4uJMR4EL0YoCoNDJkyd14sQJ60V3UwDehAIFZ0hMTNS0adNMx4CLtWrVSueff75efvll01EAGJSRkaF27dqpfv361qtdu3aqXbu26WgAIIkCBcW89dZbatOmjbp27Wo6CtwgMTFRKSkppmMAMGjHjh3q1q2btm/fbr1eeukl1apVy3Q0uEB4eLhSU1PVo0cP9ejRQ927d9esWbNMxwIqpLrpAPAus2bNUlJSkukYcJPWrVurc+fOmjdvHg9gAwA/NHToUHXs2NEaPnLkiP7v//5Pc+bMMZgKqBgKFFjeeecdNW7cWFFRUaajwI0mT56s7t27KyEhQQ0aNDAdBwDgQjabTeedd541fPDgQVWrxgUz8C1ssbA89NBDuvvuu03HgAckJSVp3LhxpmMAAACcgQIFkqR3331XderU0QUXXGA6Cjxg4MCBys7O1gcffGA6CgAAgBMKFEiSHn74YVpPAsycOXNoRQEAAF6HAgX68MMPVa1aNfXo0cN0FHhQ69at1b9/f82fP990FACAG+Xl5WnXrl3W6/vvvzcdCTgrChTQ9ySATZkyRWlpaTp69KjpKAAAN6hbt66io6N1xRVXOL02bdpkOhpQKgqUALd+/Xrl5OQoOjradBQYMnDgQN13332mYwAA3CAkJERPPPGEPvjgA+vVqVMn7d2713Q0oFTcZjjAzZ8/X5MnTzYdAwYNHTpUzz//vDIyMnT++eebjgPAxZ566iktXrxYQUFBkqTff/9dcXFxhlMBQOkoUALY0qVLVbNmTXXr1s10FBg2Y8YM3Xffffr4449NRwHgYs8//7xGjx7t9PC+iIgIg4kA4Oy4xCuAxcfHa+7cuaZjwAtcdNFFql69ut5++23TUQC4WFBQkNq2bauoqCjrVaNGDdOxAKBUFCgB6p577tHMmTMVHBxsOgq8xIwZM5SYmGg6BgAACHAUKAEoIyNDH3/8sYYPH246CrxImzZt1KdPHz355JOmowAAgABGgRKAxo0bpzlz5piOAS80Y8YMTZw40XQMAAAQwChQAswzzzyj9u3bq2vXrqajwAtVr15ds2fP1qOPPmo6CgDATS644AKNHDlSoaGhCg0NVUhICHf0hFexlTWBw+FweCIIPKNv3756/vnnZbOV+dEjgMXGxuq///2vmjdvbjoKgAr49ddflZCQoH379lnjjh07pgULFnDnLlgcDodycnKs4YyMDD322GP6/PPPDaZCILGVcSDKbYYDSP/+/TVmzBiKE5Rp1qxZuvfee/XGG2+YjgKgAnbs2KGMjAzNnj3bGle/fn2KEzix2WwKCQmxhoODgzk2gFehQAkQCxYsUHh4uPr27Ws6CnzAVVddpWXLlmn9+vW6+OKLTccBUAGhoaG68MILTccAgEqjD0oA2Lp1q5YtW6apU6eajgIfUvjwRgAAAE+iQAkAl19+uZYuXWo6BnxMVFSUOnTooBdeeMF0FAAAEEAoUPzcsGHD9NBDD6lBgwamo8AH0YoCeLe8vDwdOnTIeh09elTc2waAr6NA8WMvvfSSmjVrpkGDBpmOAh9Vp04dxcfH68EHHzQdBUAJ5s+fr3bt2qlDhw7q0KGDbrrpJl1yySWmYwFAlXCbYT/1ww8/qGfPnvr0009NR4EfSEhI0IsvvqiwsDDTUQAUcdNNNyk2NlZXX3216SjwYdu3b9fUqVOdbq7Qtm1bTZ8+3eluX4CrlHWbYVpQ/NRVV12lZ5991nQM+ImHH36YuwIBgJ+KiorS1KlT1aVLF+v18ssva8uWLaajIUBxm2E/NHnyZF1zzTXq2LGj6SjwE2FhYZo+fbpuvPFGvfbaa6bjAABcrE+fPk7Dr776qqEkAC0ofuejjz5Senq6xo0bZzoK/MyAAQPUsGFDLVy40HQUAADgxyhQ/ExcXByXdsFtHnjgAb388svatGmT6SgAAMBPcYmXHxk3bpyeeuop1ahRw3QU+LFXX31V7du351amgIfl5eXpqaee0tatW61xu3bt0uWXX24wFfxVTk6OVq5cqS+//NIad9NNN/HYAngEd/HyE4899ph27typBx54wHQUBIAdO3YoKSlJGzduNB0FCBjZ2dnq1KmTpkyZYo2rV6+e4uLiDKaCv9qyZYveeOMNFd5saf/+/WrdurVefPFFw8ngD8q6ixcFih9Yv369Jk+erOXLl5uOggCyZs0affzxx3r99ddNRwECQnZ2ts477zwusYQRq1ev1vr167VixQrTUeAHuM2wn8vJydEVV1xBcQKPGzhwoMLDwzV9+nTTUQAAgB+hQPFxF154od58803TMRCg7rrrLu3cuVNLly41HQUAAPgJOsn7sHHjxumWW25R586dTUdBAJs/f76GDRumDh066KKLLjIdBwDgJt9//71SUlKs4aioKF188cUGE8Ff0QfFR7300kv67LPPlJiYaDoKIEkaPny41q5dyx1eABf59NNPde211yo4OFiS5HA4dN555yk1NdVwMgSiEydOaNGiRTp69Kg17pNPPtEXX3yhJk2aGEwGX0QneT/0zjvvyG6380cKXmXPnj268847lZmZaToK4BemTZumX3/9Vbfffrs1rm7dugoNDTWYCjjtoosu0pdffqmwsDDTUeBj6CTvZ7744gtNmzaN4gReJzw8XOPHj9eIESNMRwH8Ru3atdWkSRPrRXECIBBQoPiQ7OxsDRgwQKtWrTIdBSjRtddeq5CQED3xxBOmowAAAB9FJ3kf0rx5c3377bemYwBn9eCDD+rGG29UdHS0oqOjTccBfMY333zj9NTub775RpGRkQYTAYAZFCg+YsCAAfr0009VrRqNXvB+K1asUJ8+ffTTTz+ZjgL4jAEDBqhLly7Wfj4vL08333yz4VRA6XJzc/Xiiy+qXr161rg77rhDQUFBBlPBH9BJ3gf07dtXd911F2ej4VN+/PFHDR8+XPv27TMdBfAJoaGh2rJli0JCQkxHAcrlww8/1EcffWQN79y5U9dcc41mzZplMBV8QVmd5GlB8XKjR4/W1VdfTXECn9O8eXMtXrxYXbt21datW03HAQC4WL9+/dSvXz9rOCUlRcePHzeYCP6C64W82Ny5c1W3bl3dcMMNpqMAldK5c2c98MADuuyyy0xHAQAAPoICxUs9++yz+uKLL3gQI3xer169dNNNN+n66683HQUAAPgALvHyQikpKfr666/197//3XQUwCX69++v+vXra/DgwXrrrbdMxwGMO3LkiO677z6dOHHCGte0aVNuhAKfVqtWLa1du1Z33nmnNe7SSy/lZg+oMAoUL/PII49o06ZNstvtpqMALhUdHS2Hw6Hw8HBt2rRJ55xzjulIgDGvvvqqvvvuOw0dOtQaN3LkSAUHBxtMBVTNbbfdpho1aujUqVOS8u/ydfvtt1OgoMK4i5cXGT16tOrUqaP777/fdBTAbb7//nsNGzZMKSkpGjJkiOk4gBEpKSn65JNPNHfuXNNRALfJyclR165d9eeff5qOAi/DXbx8xMUXX6zBgwc7nU0D/FGrVq20ceNG3X333dqxY4emTZtmOhLgdr/88osyMzOt4T179ojzfwgEDodDH3zwgTUcEhKiPn36GEwEX0ALimGbN2/W8OHDNXfuXPXs2dN0HMCj/vnPf2rJkiVatmwZd/qCXxswYIB++OEH1ahRQ5J08uRJzZ49W926dTOcDHAfh8OhhQsXKiMjwxr3yy+/6JFHHtG1115rMBlMK6sFhQLFoL/97W969dVXtWzZMtWpU8d0HMCIH3/8UQ888IDatWunZcuWmY4DuEXHjh315JNPqn379qajAEbNmjVLffr0cepIj8BTVoHC7UIM6devn/bv368333yT4gQBrXnz5lq2bJnOP/982Ww2vfzyy6YjAQDcpGnTpkpJSdFVV12lq666SldeeaWeffZZ07HgZWhB8TC73a7XX39dd955p2JiYkzHAbzOQw89pOzsbL388stq1KiR6ThAhR04cECjRo3Szz//bI3Lzc3V4sWLFRYWZjAZYN7Jkye1ceNGa/jnn3/WkiVLtGvXLoOp4Gl0kvcSr7/+uiZOnKgrr7xSS5cuVRmfCxCwHnroIX3yySeKiIjQww8/rHvvvdd0JKBCvvjiCx04cECzZs2yxjVo0IDiBJAUHBysvn37WsO7d+/Wc889ZzARvBEFipu98847SkpKUpMmTbR8+XI1b97cdCTA6/Xt21ebN2/W3Llzdfvtt+uGG27Q4MGDTccCSnTo0CGtXbvWGs7IyFCNGjV03nnnGUwF+I5jx47p4YcftoZbtmypsWPHGkwE07jEyw0OHDigp59+Wk8//bSioqJ05513cqcWoJK2bt2WVDj6AAAVHElEQVSqlJQU7d27V1OmTOGPFrzO0KFDdeDAATVu3FiSdOrUKY0cOVJdu3Y1nAzwDWlpadq5c6c1/O6778put2vAgAEGU8GduIuXB6WlpSktLU3Lly/XLbfcouHDh/O0bMBFdu/erWeffVZr167VpEmTNHHiRNWqVct0LASY48eP65577tG3335rjTt27JjmzJlDiwngItOmTdPu3btVr149Sfl9uCZNmkRLuh+hQHGzH374QampqVqyZIk6deqkESNG8DwHwI2OHj2q5557Ts8++6yGDx+uSZMmqXPnzqZjIUB8++236t+/vxYsWGCNq1Onjjp16mQwFeBfjh07pi+//NIa/uqrr7R582Z9+OGHBlPBlShQ3GDdunX697//rbS0NOXl5alfv3668cYbaS0BPOyVV17RCy+8oEsvvVRXXXWVhg4dajoS/Mz69es1fvx4pwcsnnPOOUpJSTGcDAgcGRkZmj17tho0aGCN69ixo+x2Oy3pPooCxUVeeeUVffzxx3r++efVo0cPxcbG6uKLL1aXLl1MRwMC3saNG7V8+XJt3LhR8fHxGj9+vFq3bm06FnxMXl6err/+em3atMkaFxwcrPHjxysqKsoa17p1a9WvX99ERCBgff311zp27Jg1PG3aNK1du5bWSx9FgVJJv//+uz7++GO98MILev311zV48GBde+21io2NVXBwsOl4AEpw5MgRrVixQu+9956OHj2qXr16qVevXurZs6d69uxpnQUHCu3Zs0d5eXmSpJycHHXt2lWffPKJ9fOgoCCexwN4ofj4eB06dMjar+fk5GjBggXq2bOnNU1oaKhCQkJMRcRZUKCU09GjR7Vx40Z99NFH+uCDD7Rjxw5df/316tWrlwYNGmQ6HoAK2rt3rzIyMrRt2zZlZGQoKChIP/74ozp16qSoqCh169ZNrVu3VkREhFq2bGk6Lgx45513FB8f73QA07t3b/31r381mApAeRw5ckR79uyxhvft26cFCxbo999/t8aFh4drypQpCgoKkpR/wuGGG27weFacKeALlJycHB0+fFjZ2dn66aefrNeJEyf0+eefa+/evdq3b58iIiLUsGFD9erVS71799b5559vOjoAF9u/f792796trKwsHT58WFu2bNF3332nQ4cOqV27doqOjlaTJk3UqVMndezYUZ06ddJf/vIX07FRDidPntSvv/7qNJySkqLDhw9b47Zs2aL09HRr2OFwKCUlhRubAH7q5Zdf1meffWYNHzhwQL///rsaNmwoKX8fMGDAAE2YMMGaplq1aqpZs6bHswYavypQTp06ZRUcv/zyiw4fPmy99u7dq/379+uHH35Q3bp1tWHDBh0+fFi5ublq2bKlQkND1aRJEzVt2lSNGzdW27Zt1ahRI7Vs2VItWrRQ7dq1Tb89AIbk5OTou+++0/79+5WZmak9e/Zoz549qlOnjjZu3KiWLVuqZcuWat26tVq2bKkaNWqoTp06qlOnjho3bqzQ0FA1aNBADRo0UMOGDVW/fn32KVWQm5urU6dOWcN//PGH00HG0aNHZbfbtW/fPmtcy5YttXPnThX+zTt16pTi4uIUERFhTdOxY0dFR0c7LavwzCoA/5eXl6fPP//cGj5x4oT+8Y9/6Ouvv7bGNWrUSFdffbXCwsKscW3atHHaJ4WFhal3795O827YsKGqVavmxvT+xSMFSnZ2tq6++mr98ccfqlatmqpVq6amTZvqwIEDysvLk8PhUGhoqNXs5nA45HA41LBhQ2VnZ+vkyZPKzc1V/fr1lZ2drby8POtVv359HThwwNowwsPDlZ2drdDQUOvawrp16yokJER16tRR7dq1FRYWptzcXIWGhio4OFjVq1dXbm6uU+Z69eo5nW2rWbOm/vjjD6dpateu7dRUWKdOHacOWpIUEhKiEydOlDrfkhSfpkaNGsrJyXGapm7duvrtt99KzVJS5uK/I+mM91582awb1g3r5rSS1s3hw4f122+/6dixYzp27JhycnL0xx9/KDc3Vzk5OapXr57VKnvixAk5HA79+uuvOnXqlEJCQhQSEqI2bdrowIED1v6xQYMG+u2336yDaZvNpkaNGuno0aPWNE2aNNEvv/wim81mTRcSEqIjR44oJydHoaGhatq0qd5//30j/eIOHjyoW2655YzP/H//+5/TdDVr1nT6PKX8lqxCQUFBOnHihIr+rWrcuLHTNHXr1lWdOnWsYiIvL0/nnXee0wFEvXr1rL4khcqzLVWrVs3p94pPExwcrJMnTzr9TvFtqVatWjp+/LjTNMXHlfQ9Kz7v4ssunq2kaUJDQ/Xnn386TVP8e1XZ7xnrpuT5lrR81s1pvr5uHA6H0wkRh8Mhm83m9PciNzdXe/futfZbDodDYWFhTkXMOeeco0OHDjktKygo6Ixpis63Ro0astlsVqGTl5eno0eP6uDBg9Y0jRs31rp169SsWTP5Mo+1oJSxHACAh7i74Zv9PQB4By+60KlCyipQqrtyYb66knyFzWZjHbsR69f9WMfu56nigc/RvfiuuBfr1/1Yx+7nzyeLuFgOAAAAgNegQAEAAADgNShQAAAAAHgNChQAAAAAXsOnnoMCAAAAwLeVdRcvWlAAAAAAeA23FChpCTbZbLFKznLH3ANT/jp1fiWkmU7lJ9ISnNZrLBuuy7Ddep6n97/s712P740bsb93G7Zbz/Pn/a/LC5Ss5FgNTHX1XANdlnZui9cah0OOglemPUapA/nyV1lagmwDt8meWbBuM+1SYiR/tFyC7dbTPL3/ZX/vDnxv3Ib9vRux3XpawO9/HRWxJt4hxTjs9oJ/Myv026iQNY54yaH4NaaD+LBMhz3mzHW4Jl4OxdgdbL7uwHbrNp7e/7K/9yC+N1XH/t7z2G7dxg/2v2XVH65rQclKVuzAVMWv2aAJHVw2V5QqUlExkrbtFOd+KitT29OlmKhIp7FxQ+Kl9BVazYp1A7Zbt/D0/pf9vYfxvak69veex3brFgGy/3VRgZKmhMhEyZ6plDjXzBFlyFqtFemSunRQhOksviprp7ZJ6tKhpDWYru2Zng4UANhu3cDT+1/29x7H96bq2N97HtutGwTO/rd61WeRpeTYgUqNXyPHBDZBT0lbkKh0SfFD/HwLdafM7UqX1MV0jgDCdutqnt7/sr83ge+NC7C/9zi2W1cLrP1v+VtQit35ovCuAWkJkUpMj9cafy/lPKGUdVzSdANTJcWv8fsKGn6E7dbl3Lb/ZX/vfuzv4c/Ybl2O/W8xZXVyWRMvh1T6K8YXe+54s0y7I0Z06nOJgnV5Rv+9NfEOlTQelcd26xae3v+yv/cwvjeuw/7ec9hu3cLf9r9l1R9V7oMSl3L6lnLWa028pBjZMx3aEADNUJ6Tf+1huuK1ZsMErumsqogOZ2nuj1GxvpSoNLZbd/H0/pf9vSfxvXEp9vcewnbrLoG2/+VJ8j4jTQm2gUqNsSvTkSIa+Fwh/w4jqSudb9KetjJVihmmQf71XTeE7RaoOL43rsf+3v3YbuE6FCg+ociXnjMSLhShCQ/GS6lJp6/9zkpWUqoUM2wQ67nK2G6BiuN74x7s792L7RauRYHiCwpuj6j0REU6darMf/GU1iqIS5FjTRclRhasz4Lb9/lbU6kRbLdAxfG9cR/29+7DdgsXs5U1QXk6sgAAAABAedhstrPWILSgAAAAAPAaFCgAAAAAvAYFCgAAAACvQYECAAAAwGtQoAAAAADwGhQoAAAAALwGBQoAAAAAr0GBAgAAAMBrUKAAAAAA8BoUKAAAAAC8BgUKAAAAAK9BgQIAAADAa1CgAAAAAPAaFCgAAAAAvAYFCgAAAACvQYECAAAAwGtQoAAAAADwGhQoAAAAALwGBQoAAAAAr2ErxzQOt6cAAAAAAEnVy5rA4aA+AQAAAOAaNpvtrI0kXOIFAAAAwGtQoAAAAADwGhQoAAAAALwGBQoAAAAAr0GBAgAAAMBrUKAAAAAA8BoUKAAAAAC8BgUKAAAAAK9BgQIAAADAa5z1KY6S5OBR8gAAAAA8hBYUAAAAAF6DAgUAAACA16BAAQAAAOA1KFAAAAAAeA0KFAAAAABegwIFAAAAgNegQAEAAADgNSpdoKQl2GSz2WRLSHNlHpQlLSF/vdsS5Ko17y+fZbneR1ayYl28/sqWpeTY/GyxyVkeW6prpSnBFivXxHflvDyhInnd/d58bd0BAFBxZRYoWcmxBQfERV6xyfrRE+kqrZIHhNbBv/PLx4/bLb70WZZUbFjjYpOVdZbp8rmoKLAKGueX8zzTlHDGNO4+SC22POv9cwDrPcrzWbhqmopmYTsBAHivCrSgxGuNwyGHwyHHhgkam1Lw/5Q496WrsMKD0kglpldlPjGyZxa8P4dDXvUWXcL7P8vIqJj8/2zbWVCMpGllasEP07crU5KUpZ3b8kfFREUqzq3v4/Q2sSZeSk+MdC6KYuzKLFyna+IlpSsxsvAAMEITNuT/bMOEiCrmyFJy7EBpzent0+FYo3hrPcF7xCnFsUFV/shdNh93zxMAANeofB+U4pcaldj6UHCAdsZlSafPAOcf4zkP558VP3Pasls0Cg8EM2WPqfQ7K+nNns5QuPDC9xSbrKyyzqBb0yYoIbboz4v8XmGrQJFLkBISSjpDfpZslW3x8cLPMmLQMMVIUvoKrc6SlLVT26yfbtPOLEnK1PZ0SYrRsEERTtmeTR5pFanpiZElXha3ssj6rUgrS1zKGsVLUurAgvxxStkwQdaxXmSUTm9+zu/ZWk4J67hcGbJWa0V6vIY41WCFy88vXlKVrsTIwvd7tnVecBY9OaGUDEV/d6BSVez30opeLlfWZ1vavIorI5NTi1YJLQJnZCphXmklzbsq36My1lPx/YD1nX62lM+rlPdR9KNZXdp7KKmVpLTtosi0Za3XUrcRAABczzWd5NMSZBuYqtNn5gsO4CphW1KsBlp/4dOUYBuoVGu++YVH6kBPX3YVp5RMe/5BZ2pSfmFR+H4LD0xLPINerJ9D+jZFLXUo0x5T8POVGlJYTKUnaoHTxKnSkCLr0joYLsoN68dbPsuIQRqWX6Foe6akzO1KlxQfH396nFW0dFGHYmeCm09YahWpMfbMgpaGFJ0+ri9YvwWfa3riyApc7hKpwgae1JVnhs9avUL5ddMwDYqIU0pBq4ulcB0X2WYyy1tRRwzSsJhUDSxymVuRH2rChjWKt1p7UhSn/OVbrS2Zdm0bWHS7TFfi9iHWz5S4oOBn+Qe126x1V3w7SFdikrTUUZ7llDWv4krLlKaEyER1KWw9WtOl2HeseKaS5hUp28qS5l3WeipNOd9bVrJiB24r0jK7RvFqXsLnVdr7KGX9rIkvx7Zb0nZRVDnWa4mfBwAA7lGBAiVVA0s5g/Z54bU38UNK+GNaQcOWWgeTkclJ+WcjrflGaFD+UWuJB4auU3imschZ94gJ2mAVHvlnSePXFP6hL3YGPW5IwUFK4Zn+AjHDNKjogXRMlCKLDG5zmrjwLHmchhQc8RR/zz9Wev34wmcZoQ5d8v+3bWeW0lbmF01DUvLXberKNKtoqVzWgvUb0UFdKvy7p7M5KThDHpmYnl98FN0misgqvC6tSFEaMWFDOS//itCEDZmyK1GR5e7vUuQMf2Si0p22yxjZJxesvYgO6lL4s4KWmgdLzRQj+9Li76+U5ZQ5rxLmXVKmtJVKVZHWo7ghileqTm8+JWUqPq9S5l3meipFhd5bQWGdH14ppV6KWNL7KOU9xQ1RvNN8K6E867XUdQYAgOtVqg9KaQdSMVGRJY6viC5FToVnbi+4Rid1oHV5QWTVOpeUU9E+KEXONsalnD4THr/GuW+K0+UbZ7uExXV+qPT68Y3PMq6gMkvfvjq/r0lMlCILWy+27VRyQTEVP8QVfU4qcpB3uu+Lc+AU6yxzTHp+AVFS61DEhAets+ypAytzSdHpPi35rS86s7XOkt9yVf7WiwKFxV+5nWU5FZ7XWTgV9adbsqrOzeup4ARH5T7vs3HROnDbegUAoOK8+jkoVkfp+DVFOgSb69CdlVzkkqUil1xlJccWu2Sn8pdFnU3xoqGFl62fs6nUZ1nYl2PbCq1Il9SlgyIKWy/SV2jFNkmKkQtqqQoq7PtSSnFkXZ5WvFWsUJHLiQovHVTlWwXzC55SzmoXnB0vf+tFAad+NOVwtuVUdF5nY90gQSr6OVSZJ9ZTYQFbcGlWarkuISuLi9aBu9YrAACV4JICpWfhme4Vqws6ehft0Kwif8QLL/ko9vNSWB2lU5OcL2FJS6hcR02rI2glbq+ZlayRienKb33IL0AKDzCs1oEuHfIvyyjn+yvvcpNSJasjeBHNXb1+5GWfZeGBfnq60nW6QMsvdtKVnq4zL5s7/cvWZVjpVbr+5UxpCQUtZIWtaGkJzjcxSFtQ0EH/zM9Myi9orfccMUEPFlSzMVGRZW+jWcmKLX7qPW2lUp3WQ5HWoMgoxRQtXtJWlq91L6KDuhS9zKes3zvbcio6r9IUXHqUZN1ooNilSVXh7vVUfDuPjFKM1WpRhUu0nNZBpKJiTs8rq/CySkspy3HnegUAoBJc04ISl5LfybfgshbbyBXOP4+YoKVWx/ASfl6aiAna4MiUPaZonxBbQSfukpx5m+HCOzhV7HIK5+UlpOV3Ij3d3yFOk+0xkvI7K0cWuauTraT3XykF/UQKlhu/poRbglZ4/ZSD13yWknNfj9MH+1axI50uCkt8K8U+lyo9nPF07vzGskznlp8il67lv6cY2TNLv43r6TuLnZ5fufqgRAzSsG1FlmWzyTZQp2/WULBt5l9KlKC0iAlaatfpdb5S5Wzdi1NK0UuSyvq9sy6ngvM6W6bCju42m2wDt8meWVIn8kpw93qKG6IuRT5zW+QKDVs6QRHFP69yLbPId8hpHURowoOns4zUMKfPoPTluHG9AgBQCbayJnA4HI4KzzUrWbGRiUov4yANJbDWXbzWlHgHH1N5+CwrL0vJsflFc7kLEQAAgADloj4oaUoocttT59usumYJ8BQ+S9c7fU1/l+L3QwYAAICT6i6bU3qiIm2Jp4fPcptVeDk+Sxc53XIi6cw7vwEAAOAM7rnECwAAAAAqwatvMwwAAAAgsFCgAAAAAPAaFCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBv/D9q0n4pubth1gAAAABJRU5ErkJggg==\r\n", | |
"text": [ | |
"<IPython.core.display.Image at 0x33a8150>" | |
] | |
} | |
], | |
"prompt_number": 7 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"And then you can easily create other grpahics like Violin plots (see http://bl.ocks.org/z-m-k/5014368 or https://gist.github.com/z-m-k/5014368 for code)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"html=d3.render(mode=('show','html'))\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
".area{\n", | |
" shape-rendering: geometricPrecision;\n", | |
" fill: #ccc !important;\n", | |
"}\n", | |
".boxplot{\n", | |
" shape-rendering: crispEdges;\n", | |
" fill: none;\n", | |
" stroke: black;\n", | |
" stroke-width: 1px;\n", | |
"}\n", | |
".boxplot.fill{\n", | |
" fill: black;\n", | |
"}\n", | |
".boxplot.mean, .boxplot.median{\n", | |
" fill: white;\n", | |
" stroke: white;\n", | |
"}\n", | |
".boxplot.mean{\n", | |
" shape-rendering: geometricPrecision;\n", | |
"}\n", | |
".violin{\n", | |
" shape-rendering: geometricPrecision;\n", | |
" fill: none !important;\n", | |
" stroke: #777;\n", | |
" stroke-width: 1px;\n", | |
"}\n", | |
"\n", | |
".axis path, .axis line {\n", | |
" fill: none;\n", | |
" stroke: #000;\n", | |
" stroke-width: 1px;\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" text-rendering: geometricPrecision !important; \n", | |
"\n", | |
"}\n", | |
"</style>\r\n", | |
"<div id=\"id-7f8f11a1-09b5-11e3-880d-b7e39e58f78a\" class=\"d3Output\"><svg width=\"600\" height=\"200\"><line class=\"boxplot\" x1=\"30\" x2=\"590\" y1=\"90\" y2=\"90\"></line><g transform=\"translate(30,0)\"><g transform=\"rotate(90,0,0) translate(0,-100)\"><path class=\"area\" d=\"M135.19738948657755,49.8L134.41806701601772,49.69999999999999C133.6387445454579,49.599999999999994,132.08009960433827,49.39999999999999,130.52145466321866,49.03333333333333C128.96280972209902,48.666666666666664,127.4041647809794,48.13333333333333,125.84551983985978,47.26666666666667C124.28687489874014,46.4,122.7282299576205,45.2,121.16958501650087,42.8C119.61094007538125,40.39999999999999,118.05229513426163,36.79999999999999,116.49365019314199,34.73333333333332C114.93500525202236,32.66666666666666,113.37636031090274,32.13333333333332,111.81771536978312,31.13333333333332C110.25907042866348,30.133333333333315,108.70042548754384,28.666666666666647,107.14178054642422,29.033333333333317C105.58313560530459,29.39999999999998,104.02449066418497,31.599999999999984,102.46584572306533,33.466666666666654C100.9072007819457,35.33333333333332,99.34855584082608,36.86666666666666,97.78991089970646,38.29999999999999C96.23126595858682,39.73333333333332,94.6726210174672,41.066666666666656,93.11397607634757,41.66666666666666C91.55533113522793,42.26666666666665,89.99668619410829,42.133333333333326,88.43804125298867,40.66666666666666C86.87939631186903,39.19999999999999,85.3207513707494,36.39999999999999,83.76210642962977,33.999999999999986C82.20346148851014,31.599999999999987,80.64481654739052,29.599999999999984,79.0861716062709,29.19999999999998C77.52752666515126,28.799999999999983,75.96888172403163,29.999999999999986,74.410236782912,31.033333333333317C72.85159184179236,32.06666666666665,71.29294690067272,32.93333333333332,69.7343019595531,34.466666666666654C68.17565701843347,35.999999999999986,66.61701207731383,38.19999999999999,65.05836713619422,40.09999999999999C63.49972219507458,41.99999999999999,61.94107725395495,43.599999999999994,60.38243231283532,45.099999999999994C58.823787371715696,46.599999999999994,57.26514243059607,47.99999999999999,55.70649748947645,48.76666666666666C54.147852548356816,49.53333333333333,52.589207607237185,49.66666666666666,51.030562666117554,49.73333333333333C49.47191772499792,49.8,47.91327278387829,49.8,47.13395031331847,49.79999999999999L46.35462784275866,49.8L46.35462784275866,50L47.13395031331848,49.999999999999986C47.91327278387829,49.99999999999999,49.47191772499792,49.99999999999999,51.030562666117554,49.999999999999986C52.589207607237185,49.99999999999999,54.147852548356816,49.99999999999999,55.70649748947644,49.999999999999986C57.26514243059607,49.99999999999999,58.823787371715696,49.99999999999999,60.38243231283532,49.999999999999986C61.94107725395495,49.99999999999999,63.49972219507458,49.99999999999999,65.0583671361942,49.999999999999986C66.61701207731383,49.99999999999999,68.17565701843347,49.99999999999999,69.7343019595531,49.999999999999986C71.29294690067272,49.99999999999999,72.85159184179236,49.99999999999999,74.410236782912,49.999999999999986C75.96888172403163,49.99999999999999,77.52752666515126,49.99999999999999,79.0861716062709,49.999999999999986C80.64481654739052,49.99999999999999,82.20346148851014,49.99999999999999,83.76210642962977,49.999999999999986C85.3207513707494,49.99999999999999,86.87939631186903,49.99999999999999,88.43804125298867,49.999999999999986C89.99668619410829,49.99999999999999,91.55533113522793,49.99999999999999,93.11397607634756,49.999999999999986C94.6726210174672,49.99999999999999,96.23126595858682,49.99999999999999,97.78991089970646,49.999999999999986C99.34855584082608,49.99999999999999,100.9072007819457,49.99999999999999,102.46584572306534,49.999999999999986C104.02449066418497,49.99999999999999,105.58313560530459,49.99999999999999,107.14178054642422,49.999999999999986C108.70042548754384,49.99999999999999,110.25907042866348,49.99999999999999,111.81771536978312,49.999999999999986C113.37636031090274,49.99999999999999,114.93500525202236,49.99999999999999,116.493650193142,49.999999999999986C118.05229513426163,49.99999999999999,119.61094007538125,49.99999999999999,121.16958501650087,49.999999999999986C122.7282299576205,49.99999999999999,124.28687489874014,49.99999999999999,125.84551983985978,49.999999999999986C127.4041647809794,49.99999999999999,128.96280972209902,49.99999999999999,130.52145466321866,49.999999999999986C132.08009960433827,49.99999999999999,133.6387445454579,49.99999999999999,134.41806701601772,49.999999999999986L135.19738948657755,50Z\"></path><path class=\"violin\" d=\"M135.19738948657755,49.8L134.41806701601772,49.69999999999999C133.6387445454579,49.599999999999994,132.08009960433827,49.39999999999999,130.52145466321866,49.03333333333333C128.96280972209902,48.666666666666664,127.4041647809794,48.13333333333333,125.84551983985978,47.26666666666667C124.28687489874014,46.4,122.7282299576205,45.2,121.16958501650087,42.8C119.61094007538125,40.39999999999999,118.05229513426163,36.79999999999999,116.49365019314199,34.73333333333332C114.93500525202236,32.66666666666666,113.37636031090274,32.13333333333332,111.81771536978312,31.13333333333332C110.25907042866348,30.133333333333315,108.70042548754384,28.666666666666647,107.14178054642422,29.033333333333317C105.58313560530459,29.39999999999998,104.02449066418497,31.599999999999984,102.46584572306533,33.466666666666654C100.9072007819457,35.33333333333332,99.34855584082608,36.86666666666666,97.78991089970646,38.29999999999999C96.23126595858682,39.73333333333332,94.6726210174672,41.066666666666656,93.11397607634757,41.66666666666666C91.55533113522793,42.26666666666665,89.99668619410829,42.133333333333326,88.43804125298867,40.66666666666666C86.87939631186903,39.19999999999999,85.3207513707494,36.39999999999999,83.76210642962977,33.999999999999986C82.20346148851014,31.599999999999987,80.64481654739052,29.599999999999984,79.0861716062709,29.19999999999998C77.52752666515126,28.799999999999983,75.96888172403163,29.999999999999986,74.410236782912,31.033333333333317C72.85159184179236,32.06666666666665,71.29294690067272,32.93333333333332,69.7343019595531,34.466666666666654C68.17565701843347,35.999999999999986,66.61701207731383,38.19999999999999,65.05836713619422,40.09999999999999C63.49972219507458,41.99999999999999,61.94107725395495,43.599999999999994,60.38243231283532,45.099999999999994C58.823787371715696,46.599999999999994,57.26514243059607,47.99999999999999,55.70649748947645,48.76666666666666C54.147852548356816,49.53333333333333,52.589207607237185,49.66666666666666,51.030562666117554,49.73333333333333C49.47191772499792,49.8,47.91327278387829,49.8,47.13395031331847,49.79999999999999L46.35462784275866,49.8\"></path></g><g transform=\"rotate(90,0,0) scale(1,-1)\"><path class=\"area\" d=\"M135.19738948657755,49.8L134.41806701601772,49.69999999999999C133.6387445454579,49.599999999999994,132.08009960433827,49.39999999999999,130.52145466321866,49.03333333333333C128.96280972209902,48.666666666666664,127.4041647809794,48.13333333333333,125.84551983985978,47.26666666666667C124.28687489874014,46.4,122.7282299576205,45.2,121.16958501650087,42.8C119.61094007538125,40.39999999999999,118.05229513426163,36.79999999999999,116.49365019314199,34.73333333333332C114.93500525202236,32.66666666666666,113.37636031090274,32.13333333333332,111.81771536978312,31.13333333333332C110.25907042866348,30.133333333333315,108.70042548754384,28.666666666666647,107.14178054642422,29.033333333333317C105.58313560530459,29.39999999999998,104.02449066418497,31.599999999999984,102.46584572306533,33.466666666666654C100.9072007819457,35.33333333333332,99.34855584082608,36.86666666666666,97.78991089970646,38.29999999999999C96.23126595858682,39.73333333333332,94.6726210174672,41.066666666666656,93.11397607634757,41.66666666666666C91.55533113522793,42.26666666666665,89.99668619410829,42.133333333333326,88.43804125298867,40.66666666666666C86.87939631186903,39.19999999999999,85.3207513707494,36.39999999999999,83.76210642962977,33.999999999999986C82.20346148851014,31.599999999999987,80.64481654739052,29.599999999999984,79.0861716062709,29.19999999999998C77.52752666515126,28.799999999999983,75.96888172403163,29.999999999999986,74.410236782912,31.033333333333317C72.85159184179236,32.06666666666665,71.29294690067272,32.93333333333332,69.7343019595531,34.466666666666654C68.17565701843347,35.999999999999986,66.61701207731383,38.19999999999999,65.05836713619422,40.09999999999999C63.49972219507458,41.99999999999999,61.94107725395495,43.599999999999994,60.38243231283532,45.099999999999994C58.823787371715696,46.599999999999994,57.26514243059607,47.99999999999999,55.70649748947645,48.76666666666666C54.147852548356816,49.53333333333333,52.589207607237185,49.66666666666666,51.030562666117554,49.73333333333333C49.47191772499792,49.8,47.91327278387829,49.8,47.13395031331847,49.79999999999999L46.35462784275866,49.8L46.35462784275866,50L47.13395031331848,49.999999999999986C47.91327278387829,49.99999999999999,49.47191772499792,49.99999999999999,51.030562666117554,49.999999999999986C52.589207607237185,49.99999999999999,54.147852548356816,49.99999999999999,55.70649748947644,49.999999999999986C57.26514243059607,49.99999999999999,58.823787371715696,49.99999999999999,60.38243231283532,49.999999999999986C61.94107725395495,49.99999999999999,63.49972219507458,49.99999999999999,65.0583671361942,49.999999999999986C66.61701207731383,49.99999999999999,68.17565701843347,49.99999999999999,69.7343019595531,49.999999999999986C71.29294690067272,49.99999999999999,72.85159184179236,49.99999999999999,74.410236782912,49.999999999999986C75.96888172403163,49.99999999999999,77.52752666515126,49.99999999999999,79.0861716062709,49.999999999999986C80.64481654739052,49.99999999999999,82.20346148851014,49.99999999999999,83.76210642962977,49.999999999999986C85.3207513707494,49.99999999999999,86.87939631186903,49.99999999999999,88.43804125298867,49.999999999999986C89.99668619410829,49.99999999999999,91.55533113522793,49.99999999999999,93.11397607634756,49.999999999999986C94.6726210174672,49.99999999999999,96.23126595858682,49.99999999999999,97.78991089970646,49.999999999999986C99.34855584082608,49.99999999999999,100.9072007819457,49.99999999999999,102.46584572306534,49.999999999999986C104.02449066418497,49.99999999999999,105.58313560530459,49.99999999999999,107.14178054642422,49.999999999999986C108.70042548754384,49.99999999999999,110.25907042866348,49.99999999999999,111.81771536978312,49.999999999999986C113.37636031090274,49.99999999999999,114.93500525202236,49.99999999999999,116.493650193142,49.999999999999986C118.05229513426163,49.99999999999999,119.61094007538125,49.99999999999999,121.16958501650087,49.999999999999986C122.7282299576205,49.99999999999999,124.28687489874014,49.99999999999999,125.84551983985978,49.999999999999986C127.4041647809794,49.99999999999999,128.96280972209902,49.99999999999999,130.52145466321866,49.999999999999986C132.08009960433827,49.99999999999999,133.6387445454579,49.99999999999999,134.41806701601772,49.999999999999986L135.19738948657755,50Z\"></path><path class=\"violin\" d=\"M135.19738948657755,49.8L134.41806701601772,49.69999999999999C133.6387445454579,49.599999999999994,132.08009960433827,49.39999999999999,130.52145466321866,49.03333333333333C128.96280972209902,48.666666666666664,127.4041647809794,48.13333333333333,125.84551983985978,47.26666666666667C124.28687489874014,46.4,122.7282299576205,45.2,121.16958501650087,42.8C119.61094007538125,40.39999999999999,118.05229513426163,36.79999999999999,116.49365019314199,34.73333333333332C114.93500525202236,32.66666666666666,113.37636031090274,32.13333333333332,111.81771536978312,31.13333333333332C110.25907042866348,30.133333333333315,108.70042548754384,28.666666666666647,107.14178054642422,29.033333333333317C105.58313560530459,29.39999999999998,104.02449066418497,31.599999999999984,102.46584572306533,33.466666666666654C100.9072007819457,35.33333333333332,99.34855584082608,36.86666666666666,97.78991089970646,38.29999999999999C96.23126595858682,39.73333333333332,94.6726210174672,41.066666666666656,93.11397607634757,41.66666666666666C91.55533113522793,42.26666666666665,89.99668619410829,42.133333333333326,88.43804125298867,40.66666666666666C86.87939631186903,39.19999999999999,85.3207513707494,36.39999999999999,83.76210642962977,33.999999999999986C82.20346148851014,31.599999999999987,80.64481654739052,29.599999999999984,79.0861716062709,29.19999999999998C77.52752666515126,28.799999999999983,75.96888172403163,29.999999999999986,74.410236782912,31.033333333333317C72.85159184179236,32.06666666666665,71.29294690067272,32.93333333333332,69.7343019595531,34.466666666666654C68.17565701843347,35.999999999999986,66.61701207731383,38.19999999999999,65.05836713619422,40.09999999999999C63.49972219507458,41.99999999999999,61.94107725395495,43.599999999999994,60.38243231283532,45.099999999999994C58.823787371715696,46.599999999999994,57.26514243059607,47.99999999999999,55.70649748947645,48.76666666666666C54.147852548356816,49.53333333333333,52.589207607237185,49.66666666666666,51.030562666117554,49.73333333333333C49.47191772499792,49.8,47.91327278387829,49.8,47.13395031331847,49.79999999999999L46.35462784275866,49.8\"></path></g><rect class=\"boxplot fill\" x=\"42.5\" width=\"14.999999999999993\" y=\"74.34666167468997\" height=\"31.68776806655798\"></rect><circle class=\"boxplot mean\" cx=\"50\" cy=\"89.8985368546358\" r=\"3\"></circle><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"116.27111268803432\" y2=\"116.27111268803432\"></line><line class=\"boxplot median\" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"90.58241296993242\" y2=\"90.58241296993242\"></line><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"62.783665083850266\" y2=\"62.783665083850266\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"116.27111268803432\" y2=\"106.03442974124795\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"74.34666167468997\" y2=\"62.783665083850266\"></line><rect class=\"boxplot\" x=\"42.5\" width=\"14.999999999999993\" y=\"74.34666167468997\" height=\"31.68776806655798\"></rect></g><g transform=\"translate(140,0)\"><g transform=\"rotate(90,0,0) translate(0,-100)\"><path class=\"area\" d=\"M143.03634309244595,49.8L142.1335704139021,49.76666666666666C141.23079773535824,49.73333333333333,139.42525237827056,49.66666666666666,137.61970702118288,49.533333333333324C135.81416166409517,49.39999999999999,134.00861630700746,49.199999999999996,132.20307094991978,48.8C130.3975255928321,48.39999999999999,128.5919802357444,47.8,126.78643487865669,46.93333333333332C124.980889521569,46.06666666666666,123.1753441644813,44.93333333333332,121.36979880739361,43.599999999999994C119.56425345030591,42.26666666666666,117.75870809321822,40.73333333333332,115.95316273613052,39.43333333333332C114.14761737904283,38.133333333333326,112.34207202195515,37.066666666666656,110.53652666486747,35.29999999999999C108.73098130777976,33.53333333333332,106.92543595069208,31.066666666666652,105.11989059360437,29.066666666666652C103.31434523651669,27.06666666666665,101.50879987942898,25.533333333333317,99.7032545223413,24.59999999999998C97.8977091652536,23.66666666666665,96.0921638081659,23.333333333333314,94.28661845107823,23.266666666666648C92.48107309399053,23.19999999999998,90.67552773690284,23.399999999999984,88.86998237981514,24.399999999999984C87.06443702272745,25.399999999999984,85.25889166563975,27.19999999999998,83.45334630855206,28.86666666666665C81.64780095146436,30.533333333333317,79.84225559437667,32.06666666666665,78.03671023728897,33.56666666666665C76.23116488020128,35.066666666666656,74.42561952311358,36.533333333333324,72.62007416602589,37.89999999999999C70.81452880893819,39.26666666666666,69.0089834518505,40.53333333333333,67.20343809476282,41.96666666666666C65.39789273767512,43.4,63.59234738058743,45,61.786802023499725,46.03333333333333C59.98125666641204,47.06666666666666,58.17571130932434,47.53333333333333,56.37016595223665,48C54.56462059514895,48.46666666666667,52.75907523806126,48.93333333333333,50.95352988097357,49.266666666666666C49.14798452388588,49.599999999999994,47.342439166798194,49.8,45.5368938097105,49.86666666666666C43.73134845262281,49.93333333333332,41.92580309553512,49.86666666666666,41.023030416991276,49.83333333333333L40.120257738447435,49.8L40.120257738447435,50L41.023030416991276,49.999999999999986C41.92580309553512,49.99999999999999,43.73134845262281,49.99999999999999,45.536893809710506,49.999999999999986C47.342439166798194,49.99999999999999,49.14798452388588,49.99999999999999,50.95352988097357,49.999999999999986C52.75907523806126,49.99999999999999,54.56462059514895,49.99999999999999,56.37016595223665,49.999999999999986C58.17571130932434,49.99999999999999,59.98125666641204,49.99999999999999,61.786802023499725,49.999999999999986C63.59234738058743,49.99999999999999,65.39789273767512,49.99999999999999,67.20343809476282,49.999999999999986C69.0089834518505,49.99999999999999,70.81452880893819,49.99999999999999,72.62007416602589,49.999999999999986C74.42561952311358,49.99999999999999,76.23116488020128,49.99999999999999,78.03671023728897,49.999999999999986C79.84225559437667,49.99999999999999,81.64780095146436,49.99999999999999,83.45334630855206,49.999999999999986C85.25889166563975,49.99999999999999,87.06443702272745,49.99999999999999,88.86998237981514,49.999999999999986C90.67552773690284,49.99999999999999,92.48107309399053,49.99999999999999,94.28661845107821,49.999999999999986C96.0921638081659,49.99999999999999,97.8977091652536,49.99999999999999,99.7032545223413,49.999999999999986C101.50879987942898,49.99999999999999,103.31434523651669,49.99999999999999,105.11989059360437,49.999999999999986C106.92543595069208,49.99999999999999,108.73098130777976,49.99999999999999,110.53652666486747,49.999999999999986C112.34207202195515,49.99999999999999,114.14761737904283,49.99999999999999,115.95316273613052,49.999999999999986C117.75870809321822,49.99999999999999,119.56425345030591,49.99999999999999,121.36979880739361,49.999999999999986C123.1753441644813,49.99999999999999,124.980889521569,49.99999999999999,126.78643487865669,49.999999999999986C128.5919802357444,49.99999999999999,130.3975255928321,49.99999999999999,132.20307094991978,49.999999999999986C134.00861630700746,49.99999999999999,135.81416166409517,49.99999999999999,137.61970702118288,49.999999999999986C139.42525237827056,49.99999999999999,141.23079773535824,49.99999999999999,142.13357041390208,49.999999999999986L143.03634309244595,50Z\"></path><path class=\"violin\" d=\"M143.03634309244595,49.8L142.1335704139021,49.76666666666666C141.23079773535824,49.73333333333333,139.42525237827056,49.66666666666666,137.61970702118288,49.533333333333324C135.81416166409517,49.39999999999999,134.00861630700746,49.199999999999996,132.20307094991978,48.8C130.3975255928321,48.39999999999999,128.5919802357444,47.8,126.78643487865669,46.93333333333332C124.980889521569,46.06666666666666,123.1753441644813,44.93333333333332,121.36979880739361,43.599999999999994C119.56425345030591,42.26666666666666,117.75870809321822,40.73333333333332,115.95316273613052,39.43333333333332C114.14761737904283,38.133333333333326,112.34207202195515,37.066666666666656,110.53652666486747,35.29999999999999C108.73098130777976,33.53333333333332,106.92543595069208,31.066666666666652,105.11989059360437,29.066666666666652C103.31434523651669,27.06666666666665,101.50879987942898,25.533333333333317,99.7032545223413,24.59999999999998C97.8977091652536,23.66666666666665,96.0921638081659,23.333333333333314,94.28661845107823,23.266666666666648C92.48107309399053,23.19999999999998,90.67552773690284,23.399999999999984,88.86998237981514,24.399999999999984C87.06443702272745,25.399999999999984,85.25889166563975,27.19999999999998,83.45334630855206,28.86666666666665C81.64780095146436,30.533333333333317,79.84225559437667,32.06666666666665,78.03671023728897,33.56666666666665C76.23116488020128,35.066666666666656,74.42561952311358,36.533333333333324,72.62007416602589,37.89999999999999C70.81452880893819,39.26666666666666,69.0089834518505,40.53333333333333,67.20343809476282,41.96666666666666C65.39789273767512,43.4,63.59234738058743,45,61.786802023499725,46.03333333333333C59.98125666641204,47.06666666666666,58.17571130932434,47.53333333333333,56.37016595223665,48C54.56462059514895,48.46666666666667,52.75907523806126,48.93333333333333,50.95352988097357,49.266666666666666C49.14798452388588,49.599999999999994,47.342439166798194,49.8,45.5368938097105,49.86666666666666C43.73134845262281,49.93333333333332,41.92580309553512,49.86666666666666,41.023030416991276,49.83333333333333L40.120257738447435,49.8\"></path></g><g transform=\"rotate(90,0,0) scale(1,-1)\"><path class=\"area\" d=\"M143.03634309244595,49.8L142.1335704139021,49.76666666666666C141.23079773535824,49.73333333333333,139.42525237827056,49.66666666666666,137.61970702118288,49.533333333333324C135.81416166409517,49.39999999999999,134.00861630700746,49.199999999999996,132.20307094991978,48.8C130.3975255928321,48.39999999999999,128.5919802357444,47.8,126.78643487865669,46.93333333333332C124.980889521569,46.06666666666666,123.1753441644813,44.93333333333332,121.36979880739361,43.599999999999994C119.56425345030591,42.26666666666666,117.75870809321822,40.73333333333332,115.95316273613052,39.43333333333332C114.14761737904283,38.133333333333326,112.34207202195515,37.066666666666656,110.53652666486747,35.29999999999999C108.73098130777976,33.53333333333332,106.92543595069208,31.066666666666652,105.11989059360437,29.066666666666652C103.31434523651669,27.06666666666665,101.50879987942898,25.533333333333317,99.7032545223413,24.59999999999998C97.8977091652536,23.66666666666665,96.0921638081659,23.333333333333314,94.28661845107823,23.266666666666648C92.48107309399053,23.19999999999998,90.67552773690284,23.399999999999984,88.86998237981514,24.399999999999984C87.06443702272745,25.399999999999984,85.25889166563975,27.19999999999998,83.45334630855206,28.86666666666665C81.64780095146436,30.533333333333317,79.84225559437667,32.06666666666665,78.03671023728897,33.56666666666665C76.23116488020128,35.066666666666656,74.42561952311358,36.533333333333324,72.62007416602589,37.89999999999999C70.81452880893819,39.26666666666666,69.0089834518505,40.53333333333333,67.20343809476282,41.96666666666666C65.39789273767512,43.4,63.59234738058743,45,61.786802023499725,46.03333333333333C59.98125666641204,47.06666666666666,58.17571130932434,47.53333333333333,56.37016595223665,48C54.56462059514895,48.46666666666667,52.75907523806126,48.93333333333333,50.95352988097357,49.266666666666666C49.14798452388588,49.599999999999994,47.342439166798194,49.8,45.5368938097105,49.86666666666666C43.73134845262281,49.93333333333332,41.92580309553512,49.86666666666666,41.023030416991276,49.83333333333333L40.120257738447435,49.8L40.120257738447435,50L41.023030416991276,49.999999999999986C41.92580309553512,49.99999999999999,43.73134845262281,49.99999999999999,45.536893809710506,49.999999999999986C47.342439166798194,49.99999999999999,49.14798452388588,49.99999999999999,50.95352988097357,49.999999999999986C52.75907523806126,49.99999999999999,54.56462059514895,49.99999999999999,56.37016595223665,49.999999999999986C58.17571130932434,49.99999999999999,59.98125666641204,49.99999999999999,61.786802023499725,49.999999999999986C63.59234738058743,49.99999999999999,65.39789273767512,49.99999999999999,67.20343809476282,49.999999999999986C69.0089834518505,49.99999999999999,70.81452880893819,49.99999999999999,72.62007416602589,49.999999999999986C74.42561952311358,49.99999999999999,76.23116488020128,49.99999999999999,78.03671023728897,49.999999999999986C79.84225559437667,49.99999999999999,81.64780095146436,49.99999999999999,83.45334630855206,49.999999999999986C85.25889166563975,49.99999999999999,87.06443702272745,49.99999999999999,88.86998237981514,49.999999999999986C90.67552773690284,49.99999999999999,92.48107309399053,49.99999999999999,94.28661845107821,49.999999999999986C96.0921638081659,49.99999999999999,97.8977091652536,49.99999999999999,99.7032545223413,49.999999999999986C101.50879987942898,49.99999999999999,103.31434523651669,49.99999999999999,105.11989059360437,49.999999999999986C106.92543595069208,49.99999999999999,108.73098130777976,49.99999999999999,110.53652666486747,49.999999999999986C112.34207202195515,49.99999999999999,114.14761737904283,49.99999999999999,115.95316273613052,49.999999999999986C117.75870809321822,49.99999999999999,119.56425345030591,49.99999999999999,121.36979880739361,49.999999999999986C123.1753441644813,49.99999999999999,124.980889521569,49.99999999999999,126.78643487865669,49.999999999999986C128.5919802357444,49.99999999999999,130.3975255928321,49.99999999999999,132.20307094991978,49.999999999999986C134.00861630700746,49.99999999999999,135.81416166409517,49.99999999999999,137.61970702118288,49.999999999999986C139.42525237827056,49.99999999999999,141.23079773535824,49.99999999999999,142.13357041390208,49.999999999999986L143.03634309244595,50Z\"></path><path class=\"violin\" d=\"M143.03634309244595,49.8L142.1335704139021,49.76666666666666C141.23079773535824,49.73333333333333,139.42525237827056,49.66666666666666,137.61970702118288,49.533333333333324C135.81416166409517,49.39999999999999,134.00861630700746,49.199999999999996,132.20307094991978,48.8C130.3975255928321,48.39999999999999,128.5919802357444,47.8,126.78643487865669,46.93333333333332C124.980889521569,46.06666666666666,123.1753441644813,44.93333333333332,121.36979880739361,43.599999999999994C119.56425345030591,42.26666666666666,117.75870809321822,40.73333333333332,115.95316273613052,39.43333333333332C114.14761737904283,38.133333333333326,112.34207202195515,37.066666666666656,110.53652666486747,35.29999999999999C108.73098130777976,33.53333333333332,106.92543595069208,31.066666666666652,105.11989059360437,29.066666666666652C103.31434523651669,27.06666666666665,101.50879987942898,25.533333333333317,99.7032545223413,24.59999999999998C97.8977091652536,23.66666666666665,96.0921638081659,23.333333333333314,94.28661845107823,23.266666666666648C92.48107309399053,23.19999999999998,90.67552773690284,23.399999999999984,88.86998237981514,24.399999999999984C87.06443702272745,25.399999999999984,85.25889166563975,27.19999999999998,83.45334630855206,28.86666666666665C81.64780095146436,30.533333333333317,79.84225559437667,32.06666666666665,78.03671023728897,33.56666666666665C76.23116488020128,35.066666666666656,74.42561952311358,36.533333333333324,72.62007416602589,37.89999999999999C70.81452880893819,39.26666666666666,69.0089834518505,40.53333333333333,67.20343809476282,41.96666666666666C65.39789273767512,43.4,63.59234738058743,45,61.786802023499725,46.03333333333333C59.98125666641204,47.06666666666666,58.17571130932434,47.53333333333333,56.37016595223665,48C54.56462059514895,48.46666666666667,52.75907523806126,48.93333333333333,50.95352988097357,49.266666666666666C49.14798452388588,49.599999999999994,47.342439166798194,49.8,45.5368938097105,49.86666666666666C43.73134845262281,49.93333333333332,41.92580309553512,49.86666666666666,41.023030416991276,49.83333333333333L40.120257738447435,49.8\"></path></g><rect class=\"boxplot fill\" x=\"42.5\" width=\"14.999999999999993\" y=\"79.93536177637388\" height=\"21.584567787827453\"></rect><circle class=\"boxplot mean\" cx=\"50\" cy=\"90.67469572901601\" r=\"3\"></circle><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"116.88433830681223\" y2=\"116.88433830681223\"></line><line class=\"boxplot median\" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"90.82909562867174\" y2=\"90.82909562867174\"></line><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"63.95321669987872\" y2=\"63.95321669987872\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"116.88433830681223\" y2=\"101.51992956420133\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"79.93536177637388\" y2=\"63.95321669987872\"></line><rect class=\"boxplot\" x=\"42.5\" width=\"14.999999999999993\" y=\"79.93536177637388\" height=\"21.584567787827453\"></rect></g><g transform=\"translate(250,0)\"><g transform=\"rotate(90,0,0) translate(0,-100)\"><path class=\"area\" d=\"M114.53046585104897,49.8L113.84726994462889,49.64999999999999C113.16407403820882,49.49999999999999,111.79768222536867,49.19999999999999,110.43129041252854,48.816666666666656C109.06489859968839,48.43333333333332,107.69850678684824,47.96666666666666,106.3321149740081,47.36666666666666C104.96572316116796,46.766666666666666,103.59933134832782,46.03333333333333,102.23293953548767,45.14999999999999C100.86654772264754,44.26666666666666,99.5001559098074,43.23333333333333,98.13376409696725,42.53333333333333C96.76737228412712,41.83333333333333,95.40098047128697,41.46666666666666,94.03458865844684,41.133333333333326C92.66819684560669,40.79999999999999,91.30180503276654,40.499999999999986,89.9354132199264,40.51666666666666C88.56902140708625,40.53333333333332,87.20262959424612,40.86666666666666,85.83623778140598,41.89999999999999C84.46984596856583,42.93333333333332,83.10345415572569,44.66666666666666,81.73706234288554,45.18333333333333C80.3706705300454,45.699999999999996,79.00427871720527,45,77.63788690436513,44.15C76.27149509152498,43.3,74.90510327868483,42.3,73.53871146584468,40.4C72.17231965300454,38.49999999999999,70.8059278401644,35.69999999999999,69.43953602732427,33.033333333333324C68.07314421448412,30.366666666666653,66.70675240164397,27.833333333333314,65.34036058880383,25.94999999999998C63.97396877596369,24.066666666666645,62.60757696312355,22.833333333333314,61.2411851502834,22.316666666666645C59.87479333744326,21.79999999999998,58.50840152460311,21.99999999999998,57.14200971176297,23.39999999999998C55.775617898922825,24.799999999999983,54.40922608608269,27.399999999999984,53.04283427324255,29.733333333333317C51.676442460402406,32.06666666666665,50.31005064756226,34.13333333333332,48.94365883472211,36.73333333333332C47.577267021881966,39.33333333333332,46.21087520904183,42.466666666666654,44.84448339620169,44.499999999999986C43.47809158336156,46.53333333333333,42.111699770521426,47.46666666666666,40.745307957681284,48.13333333333333C39.37891614484114,48.8,38.012524332001,49.199999999999996,37.32932842558093,49.39999999999999L36.64613251916086,49.6L36.64613251916086,50L37.329328425580925,49.999999999999986C38.012524332001,49.99999999999999,39.37891614484114,49.99999999999999,40.745307957681284,49.999999999999986C42.111699770521426,49.99999999999999,43.47809158336156,49.99999999999999,44.844483396201696,49.999999999999986C46.21087520904183,49.99999999999999,47.577267021881966,49.99999999999999,48.943658834722115,49.999999999999986C50.31005064756226,49.99999999999999,51.676442460402406,49.99999999999999,53.04283427324255,49.999999999999986C54.40922608608269,49.99999999999999,55.775617898922825,49.99999999999999,57.14200971176297,49.999999999999986C58.50840152460311,49.99999999999999,59.87479333744326,49.99999999999999,61.2411851502834,49.999999999999986C62.60757696312355,49.99999999999999,63.97396877596369,49.99999999999999,65.34036058880383,49.999999999999986C66.70675240164397,49.99999999999999,68.07314421448412,49.99999999999999,69.43953602732427,49.999999999999986C70.8059278401644,49.99999999999999,72.17231965300454,49.99999999999999,73.53871146584468,49.999999999999986C74.90510327868483,49.99999999999999,76.27149509152498,49.99999999999999,77.63788690436512,49.999999999999986C79.00427871720527,49.99999999999999,80.3706705300454,49.99999999999999,81.73706234288554,49.999999999999986C83.10345415572569,49.99999999999999,84.46984596856583,49.99999999999999,85.83623778140597,49.999999999999986C87.20262959424612,49.99999999999999,88.56902140708625,49.99999999999999,89.93541321992639,49.999999999999986C91.30180503276654,49.99999999999999,92.66819684560669,49.99999999999999,94.03458865844684,49.999999999999986C95.40098047128697,49.99999999999999,96.76737228412712,49.99999999999999,98.13376409696727,49.999999999999986C99.5001559098074,49.99999999999999,100.86654772264754,49.99999999999999,102.23293953548767,49.999999999999986C103.59933134832782,49.99999999999999,104.96572316116796,49.99999999999999,106.3321149740081,49.999999999999986C107.69850678684824,49.99999999999999,109.06489859968839,49.99999999999999,110.43129041252853,49.999999999999986C111.79768222536867,49.99999999999999,113.16407403820882,49.99999999999999,113.84726994462889,49.999999999999986L114.53046585104897,50Z\"></path><path class=\"violin\" d=\"M114.53046585104897,49.8L113.84726994462889,49.64999999999999C113.16407403820882,49.49999999999999,111.79768222536867,49.19999999999999,110.43129041252854,48.816666666666656C109.06489859968839,48.43333333333332,107.69850678684824,47.96666666666666,106.3321149740081,47.36666666666666C104.96572316116796,46.766666666666666,103.59933134832782,46.03333333333333,102.23293953548767,45.14999999999999C100.86654772264754,44.26666666666666,99.5001559098074,43.23333333333333,98.13376409696725,42.53333333333333C96.76737228412712,41.83333333333333,95.40098047128697,41.46666666666666,94.03458865844684,41.133333333333326C92.66819684560669,40.79999999999999,91.30180503276654,40.499999999999986,89.9354132199264,40.51666666666666C88.56902140708625,40.53333333333332,87.20262959424612,40.86666666666666,85.83623778140598,41.89999999999999C84.46984596856583,42.93333333333332,83.10345415572569,44.66666666666666,81.73706234288554,45.18333333333333C80.3706705300454,45.699999999999996,79.00427871720527,45,77.63788690436513,44.15C76.27149509152498,43.3,74.90510327868483,42.3,73.53871146584468,40.4C72.17231965300454,38.49999999999999,70.8059278401644,35.69999999999999,69.43953602732427,33.033333333333324C68.07314421448412,30.366666666666653,66.70675240164397,27.833333333333314,65.34036058880383,25.94999999999998C63.97396877596369,24.066666666666645,62.60757696312355,22.833333333333314,61.2411851502834,22.316666666666645C59.87479333744326,21.79999999999998,58.50840152460311,21.99999999999998,57.14200971176297,23.39999999999998C55.775617898922825,24.799999999999983,54.40922608608269,27.399999999999984,53.04283427324255,29.733333333333317C51.676442460402406,32.06666666666665,50.31005064756226,34.13333333333332,48.94365883472211,36.73333333333332C47.577267021881966,39.33333333333332,46.21087520904183,42.466666666666654,44.84448339620169,44.499999999999986C43.47809158336156,46.53333333333333,42.111699770521426,47.46666666666666,40.745307957681284,48.13333333333333C39.37891614484114,48.8,38.012524332001,49.199999999999996,37.32932842558093,49.39999999999999L36.64613251916086,49.6\"></path></g><g transform=\"rotate(90,0,0) scale(1,-1)\"><path class=\"area\" d=\"M114.53046585104897,49.8L113.84726994462889,49.64999999999999C113.16407403820882,49.49999999999999,111.79768222536867,49.19999999999999,110.43129041252854,48.816666666666656C109.06489859968839,48.43333333333332,107.69850678684824,47.96666666666666,106.3321149740081,47.36666666666666C104.96572316116796,46.766666666666666,103.59933134832782,46.03333333333333,102.23293953548767,45.14999999999999C100.86654772264754,44.26666666666666,99.5001559098074,43.23333333333333,98.13376409696725,42.53333333333333C96.76737228412712,41.83333333333333,95.40098047128697,41.46666666666666,94.03458865844684,41.133333333333326C92.66819684560669,40.79999999999999,91.30180503276654,40.499999999999986,89.9354132199264,40.51666666666666C88.56902140708625,40.53333333333332,87.20262959424612,40.86666666666666,85.83623778140598,41.89999999999999C84.46984596856583,42.93333333333332,83.10345415572569,44.66666666666666,81.73706234288554,45.18333333333333C80.3706705300454,45.699999999999996,79.00427871720527,45,77.63788690436513,44.15C76.27149509152498,43.3,74.90510327868483,42.3,73.53871146584468,40.4C72.17231965300454,38.49999999999999,70.8059278401644,35.69999999999999,69.43953602732427,33.033333333333324C68.07314421448412,30.366666666666653,66.70675240164397,27.833333333333314,65.34036058880383,25.94999999999998C63.97396877596369,24.066666666666645,62.60757696312355,22.833333333333314,61.2411851502834,22.316666666666645C59.87479333744326,21.79999999999998,58.50840152460311,21.99999999999998,57.14200971176297,23.39999999999998C55.775617898922825,24.799999999999983,54.40922608608269,27.399999999999984,53.04283427324255,29.733333333333317C51.676442460402406,32.06666666666665,50.31005064756226,34.13333333333332,48.94365883472211,36.73333333333332C47.577267021881966,39.33333333333332,46.21087520904183,42.466666666666654,44.84448339620169,44.499999999999986C43.47809158336156,46.53333333333333,42.111699770521426,47.46666666666666,40.745307957681284,48.13333333333333C39.37891614484114,48.8,38.012524332001,49.199999999999996,37.32932842558093,49.39999999999999L36.64613251916086,49.6L36.64613251916086,50L37.329328425580925,49.999999999999986C38.012524332001,49.99999999999999,39.37891614484114,49.99999999999999,40.745307957681284,49.999999999999986C42.111699770521426,49.99999999999999,43.47809158336156,49.99999999999999,44.844483396201696,49.999999999999986C46.21087520904183,49.99999999999999,47.577267021881966,49.99999999999999,48.943658834722115,49.999999999999986C50.31005064756226,49.99999999999999,51.676442460402406,49.99999999999999,53.04283427324255,49.999999999999986C54.40922608608269,49.99999999999999,55.775617898922825,49.99999999999999,57.14200971176297,49.999999999999986C58.50840152460311,49.99999999999999,59.87479333744326,49.99999999999999,61.2411851502834,49.999999999999986C62.60757696312355,49.99999999999999,63.97396877596369,49.99999999999999,65.34036058880383,49.999999999999986C66.70675240164397,49.99999999999999,68.07314421448412,49.99999999999999,69.43953602732427,49.999999999999986C70.8059278401644,49.99999999999999,72.17231965300454,49.99999999999999,73.53871146584468,49.999999999999986C74.90510327868483,49.99999999999999,76.27149509152498,49.99999999999999,77.63788690436512,49.999999999999986C79.00427871720527,49.99999999999999,80.3706705300454,49.99999999999999,81.73706234288554,49.999999999999986C83.10345415572569,49.99999999999999,84.46984596856583,49.99999999999999,85.83623778140597,49.999999999999986C87.20262959424612,49.99999999999999,88.56902140708625,49.99999999999999,89.93541321992639,49.999999999999986C91.30180503276654,49.99999999999999,92.66819684560669,49.99999999999999,94.03458865844684,49.999999999999986C95.40098047128697,49.99999999999999,96.76737228412712,49.99999999999999,98.13376409696727,49.999999999999986C99.5001559098074,49.99999999999999,100.86654772264754,49.99999999999999,102.23293953548767,49.999999999999986C103.59933134832782,49.99999999999999,104.96572316116796,49.99999999999999,106.3321149740081,49.999999999999986C107.69850678684824,49.99999999999999,109.06489859968839,49.99999999999999,110.43129041252853,49.999999999999986C111.79768222536867,49.99999999999999,113.16407403820882,49.99999999999999,113.84726994462889,49.999999999999986L114.53046585104897,50Z\"></path><path class=\"violin\" d=\"M114.53046585104897,49.8L113.84726994462889,49.64999999999999C113.16407403820882,49.49999999999999,111.79768222536867,49.19999999999999,110.43129041252854,48.816666666666656C109.06489859968839,48.43333333333332,107.69850678684824,47.96666666666666,106.3321149740081,47.36666666666666C104.96572316116796,46.766666666666666,103.59933134832782,46.03333333333333,102.23293953548767,45.14999999999999C100.86654772264754,44.26666666666666,99.5001559098074,43.23333333333333,98.13376409696725,42.53333333333333C96.76737228412712,41.83333333333333,95.40098047128697,41.46666666666666,94.03458865844684,41.133333333333326C92.66819684560669,40.79999999999999,91.30180503276654,40.499999999999986,89.9354132199264,40.51666666666666C88.56902140708625,40.53333333333332,87.20262959424612,40.86666666666666,85.83623778140598,41.89999999999999C84.46984596856583,42.93333333333332,83.10345415572569,44.66666666666666,81.73706234288554,45.18333333333333C80.3706705300454,45.699999999999996,79.00427871720527,45,77.63788690436513,44.15C76.27149509152498,43.3,74.90510327868483,42.3,73.53871146584468,40.4C72.17231965300454,38.49999999999999,70.8059278401644,35.69999999999999,69.43953602732427,33.033333333333324C68.07314421448412,30.366666666666653,66.70675240164397,27.833333333333314,65.34036058880383,25.94999999999998C63.97396877596369,24.066666666666645,62.60757696312355,22.833333333333314,61.2411851502834,22.316666666666645C59.87479333744326,21.79999999999998,58.50840152460311,21.99999999999998,57.14200971176297,23.39999999999998C55.775617898922825,24.799999999999983,54.40922608608269,27.399999999999984,53.04283427324255,29.733333333333317C51.676442460402406,32.06666666666665,50.31005064756226,34.13333333333332,48.94365883472211,36.73333333333332C47.577267021881966,39.33333333333332,46.21087520904183,42.466666666666654,44.84448339620169,44.499999999999986C43.47809158336156,46.53333333333333,42.111699770521426,47.46666666666666,40.745307957681284,48.13333333333333C39.37891614484114,48.8,38.012524332001,49.199999999999996,37.32932842558093,49.39999999999999L36.64613251916086,49.6\"></path></g><rect class=\"boxplot fill\" x=\"42.5\" width=\"14.999999999999993\" y=\"54.72237154298263\" height=\"20.50142338055886\"></rect><circle class=\"boxplot mean\" cx=\"50\" cy=\"66.19234481133837\" r=\"3\"></circle><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"97.4861541086938\" y2=\"97.4861541086938\"></line><line class=\"boxplot median\" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"61.759935318433335\" y2=\"61.759935318433335\"></line><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"46.28641295922081\" y2=\"46.28641295922081\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"97.4861541086938\" y2=\"75.22379492354149\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"54.72237154298263\" y2=\"46.28641295922081\"></line><rect class=\"boxplot\" x=\"42.5\" width=\"14.999999999999993\" y=\"54.72237154298263\" height=\"20.50142338055886\"></rect></g><g transform=\"translate(360,0)\"><g transform=\"rotate(90,0,0) translate(0,-100)\"><path class=\"area\" d=\"M114.86139444453201,49.4L114.4249359615095,49.36666666666666C113.98847747848701,49.33333333333333,113.11556051244202,49.266666666666666,112.24264354639703,49C111.36972658035204,48.73333333333333,110.49680961430705,48.266666666666666,109.62389264826207,47.633333333333326C108.75097568221707,47,107.87805871617209,46.199999999999996,107.00514175012711,45.56666666666667C106.13222478408211,44.93333333333333,105.25930781803712,44.46666666666667,104.38639085199213,43.4C103.51347388594714,42.33333333333333,102.64055691990214,40.66666666666666,101.76763995385714,38.43333333333332C100.89472298781214,36.19999999999999,100.02180602176716,33.39999999999999,99.14888905572218,31.933333333333323C98.27597208967718,30.466666666666654,97.40305512363219,30.333333333333318,96.5301381575872,29.799999999999983C95.6572211915422,29.26666666666665,94.78430422549721,28.333333333333314,93.91138725945221,27.36666666666665C93.03847029340723,26.399999999999984,92.16555332736223,25.399999999999984,91.29263636131725,25.266666666666648C90.41971939527224,25.133333333333315,89.54680242922726,25.866666666666646,88.67388546318226,26.466666666666647C87.80096849713726,27.06666666666665,86.92805153109228,27.533333333333314,86.0551345650473,28.966666666666647C85.18221759900231,30.399999999999984,84.3093006329573,32.79999999999998,83.43638366691232,34.466666666666654C82.56346670086732,36.133333333333326,81.69054973482234,37.066666666666656,80.81763276877736,38.36666666666666C79.94471580273236,39.66666666666666,79.07179883668736,41.33333333333333,78.19888187064238,42.533333333333324C77.32596490459738,43.73333333333333,76.4530479385524,44.46666666666666,75.5801309725074,45.43333333333333C74.70721400646242,46.39999999999999,73.83429704041743,47.599999999999994,72.96138007437243,48.199999999999996C72.08846310832743,48.8,71.21554614228245,48.8,70.34262917623747,48.93333333333333C69.46971221019247,49.06666666666666,68.59679524414747,49.33333333333333,67.72387827810249,49.43333333333333C66.85096131205749,49.53333333333333,65.9780443460125,49.46666666666666,65.54158586298999,49.43333333333333L65.1051273799675,49.4L65.1051273799675,50L65.54158586298999,49.999999999999986C65.9780443460125,49.99999999999999,66.85096131205749,49.99999999999999,67.72387827810249,49.999999999999986C68.59679524414747,49.99999999999999,69.46971221019247,49.99999999999999,70.34262917623747,49.999999999999986C71.21554614228245,49.99999999999999,72.08846310832743,49.99999999999999,72.96138007437243,49.999999999999986C73.83429704041743,49.99999999999999,74.70721400646242,49.99999999999999,75.5801309725074,49.999999999999986C76.4530479385524,49.99999999999999,77.32596490459738,49.99999999999999,78.19888187064238,49.999999999999986C79.07179883668736,49.99999999999999,79.94471580273236,49.99999999999999,80.81763276877734,49.999999999999986C81.69054973482234,49.99999999999999,82.56346670086732,49.99999999999999,83.43638366691232,49.999999999999986C84.3093006329573,49.99999999999999,85.18221759900231,49.99999999999999,86.0551345650473,49.999999999999986C86.92805153109228,49.99999999999999,87.80096849713726,49.99999999999999,88.67388546318226,49.999999999999986C89.54680242922726,49.99999999999999,90.41971939527224,49.99999999999999,91.29263636131725,49.999999999999986C92.16555332736223,49.99999999999999,93.03847029340723,49.99999999999999,93.91138725945223,49.999999999999986C94.78430422549721,49.99999999999999,95.6572211915422,49.99999999999999,96.5301381575872,49.999999999999986C97.40305512363219,49.99999999999999,98.27597208967718,49.99999999999999,99.14888905572218,49.999999999999986C100.02180602176716,49.99999999999999,100.89472298781214,49.99999999999999,101.76763995385714,49.999999999999986C102.64055691990214,49.99999999999999,103.51347388594714,49.99999999999999,104.38639085199212,49.999999999999986C105.25930781803712,49.99999999999999,106.13222478408211,49.99999999999999,107.00514175012711,49.999999999999986C107.87805871617209,49.99999999999999,108.75097568221707,49.99999999999999,109.62389264826206,49.999999999999986C110.49680961430705,49.99999999999999,111.36972658035204,49.99999999999999,112.24264354639702,49.999999999999986C113.11556051244202,49.99999999999999,113.98847747848701,49.99999999999999,114.42493596150952,49.999999999999986L114.86139444453201,50Z\"></path><path class=\"violin\" d=\"M114.86139444453201,49.4L114.4249359615095,49.36666666666666C113.98847747848701,49.33333333333333,113.11556051244202,49.266666666666666,112.24264354639703,49C111.36972658035204,48.73333333333333,110.49680961430705,48.266666666666666,109.62389264826207,47.633333333333326C108.75097568221707,47,107.87805871617209,46.199999999999996,107.00514175012711,45.56666666666667C106.13222478408211,44.93333333333333,105.25930781803712,44.46666666666667,104.38639085199213,43.4C103.51347388594714,42.33333333333333,102.64055691990214,40.66666666666666,101.76763995385714,38.43333333333332C100.89472298781214,36.19999999999999,100.02180602176716,33.39999999999999,99.14888905572218,31.933333333333323C98.27597208967718,30.466666666666654,97.40305512363219,30.333333333333318,96.5301381575872,29.799999999999983C95.6572211915422,29.26666666666665,94.78430422549721,28.333333333333314,93.91138725945221,27.36666666666665C93.03847029340723,26.399999999999984,92.16555332736223,25.399999999999984,91.29263636131725,25.266666666666648C90.41971939527224,25.133333333333315,89.54680242922726,25.866666666666646,88.67388546318226,26.466666666666647C87.80096849713726,27.06666666666665,86.92805153109228,27.533333333333314,86.0551345650473,28.966666666666647C85.18221759900231,30.399999999999984,84.3093006329573,32.79999999999998,83.43638366691232,34.466666666666654C82.56346670086732,36.133333333333326,81.69054973482234,37.066666666666656,80.81763276877736,38.36666666666666C79.94471580273236,39.66666666666666,79.07179883668736,41.33333333333333,78.19888187064238,42.533333333333324C77.32596490459738,43.73333333333333,76.4530479385524,44.46666666666666,75.5801309725074,45.43333333333333C74.70721400646242,46.39999999999999,73.83429704041743,47.599999999999994,72.96138007437243,48.199999999999996C72.08846310832743,48.8,71.21554614228245,48.8,70.34262917623747,48.93333333333333C69.46971221019247,49.06666666666666,68.59679524414747,49.33333333333333,67.72387827810249,49.43333333333333C66.85096131205749,49.53333333333333,65.9780443460125,49.46666666666666,65.54158586298999,49.43333333333333L65.1051273799675,49.4\"></path></g><g transform=\"rotate(90,0,0) scale(1,-1)\"><path class=\"area\" d=\"M114.86139444453201,49.4L114.4249359615095,49.36666666666666C113.98847747848701,49.33333333333333,113.11556051244202,49.266666666666666,112.24264354639703,49C111.36972658035204,48.73333333333333,110.49680961430705,48.266666666666666,109.62389264826207,47.633333333333326C108.75097568221707,47,107.87805871617209,46.199999999999996,107.00514175012711,45.56666666666667C106.13222478408211,44.93333333333333,105.25930781803712,44.46666666666667,104.38639085199213,43.4C103.51347388594714,42.33333333333333,102.64055691990214,40.66666666666666,101.76763995385714,38.43333333333332C100.89472298781214,36.19999999999999,100.02180602176716,33.39999999999999,99.14888905572218,31.933333333333323C98.27597208967718,30.466666666666654,97.40305512363219,30.333333333333318,96.5301381575872,29.799999999999983C95.6572211915422,29.26666666666665,94.78430422549721,28.333333333333314,93.91138725945221,27.36666666666665C93.03847029340723,26.399999999999984,92.16555332736223,25.399999999999984,91.29263636131725,25.266666666666648C90.41971939527224,25.133333333333315,89.54680242922726,25.866666666666646,88.67388546318226,26.466666666666647C87.80096849713726,27.06666666666665,86.92805153109228,27.533333333333314,86.0551345650473,28.966666666666647C85.18221759900231,30.399999999999984,84.3093006329573,32.79999999999998,83.43638366691232,34.466666666666654C82.56346670086732,36.133333333333326,81.69054973482234,37.066666666666656,80.81763276877736,38.36666666666666C79.94471580273236,39.66666666666666,79.07179883668736,41.33333333333333,78.19888187064238,42.533333333333324C77.32596490459738,43.73333333333333,76.4530479385524,44.46666666666666,75.5801309725074,45.43333333333333C74.70721400646242,46.39999999999999,73.83429704041743,47.599999999999994,72.96138007437243,48.199999999999996C72.08846310832743,48.8,71.21554614228245,48.8,70.34262917623747,48.93333333333333C69.46971221019247,49.06666666666666,68.59679524414747,49.33333333333333,67.72387827810249,49.43333333333333C66.85096131205749,49.53333333333333,65.9780443460125,49.46666666666666,65.54158586298999,49.43333333333333L65.1051273799675,49.4L65.1051273799675,50L65.54158586298999,49.999999999999986C65.9780443460125,49.99999999999999,66.85096131205749,49.99999999999999,67.72387827810249,49.999999999999986C68.59679524414747,49.99999999999999,69.46971221019247,49.99999999999999,70.34262917623747,49.999999999999986C71.21554614228245,49.99999999999999,72.08846310832743,49.99999999999999,72.96138007437243,49.999999999999986C73.83429704041743,49.99999999999999,74.70721400646242,49.99999999999999,75.5801309725074,49.999999999999986C76.4530479385524,49.99999999999999,77.32596490459738,49.99999999999999,78.19888187064238,49.999999999999986C79.07179883668736,49.99999999999999,79.94471580273236,49.99999999999999,80.81763276877734,49.999999999999986C81.69054973482234,49.99999999999999,82.56346670086732,49.99999999999999,83.43638366691232,49.999999999999986C84.3093006329573,49.99999999999999,85.18221759900231,49.99999999999999,86.0551345650473,49.999999999999986C86.92805153109228,49.99999999999999,87.80096849713726,49.99999999999999,88.67388546318226,49.999999999999986C89.54680242922726,49.99999999999999,90.41971939527224,49.99999999999999,91.29263636131725,49.999999999999986C92.16555332736223,49.99999999999999,93.03847029340723,49.99999999999999,93.91138725945223,49.999999999999986C94.78430422549721,49.99999999999999,95.6572211915422,49.99999999999999,96.5301381575872,49.999999999999986C97.40305512363219,49.99999999999999,98.27597208967718,49.99999999999999,99.14888905572218,49.999999999999986C100.02180602176716,49.99999999999999,100.89472298781214,49.99999999999999,101.76763995385714,49.999999999999986C102.64055691990214,49.99999999999999,103.51347388594714,49.99999999999999,104.38639085199212,49.999999999999986C105.25930781803712,49.99999999999999,106.13222478408211,49.99999999999999,107.00514175012711,49.999999999999986C107.87805871617209,49.99999999999999,108.75097568221707,49.99999999999999,109.62389264826206,49.999999999999986C110.49680961430705,49.99999999999999,111.36972658035204,49.99999999999999,112.24264354639702,49.999999999999986C113.11556051244202,49.99999999999999,113.98847747848701,49.99999999999999,114.42493596150952,49.999999999999986L114.86139444453201,50Z\"></path><path class=\"violin\" d=\"M114.86139444453201,49.4L114.4249359615095,49.36666666666666C113.98847747848701,49.33333333333333,113.11556051244202,49.266666666666666,112.24264354639703,49C111.36972658035204,48.73333333333333,110.49680961430705,48.266666666666666,109.62389264826207,47.633333333333326C108.75097568221707,47,107.87805871617209,46.199999999999996,107.00514175012711,45.56666666666667C106.13222478408211,44.93333333333333,105.25930781803712,44.46666666666667,104.38639085199213,43.4C103.51347388594714,42.33333333333333,102.64055691990214,40.66666666666666,101.76763995385714,38.43333333333332C100.89472298781214,36.19999999999999,100.02180602176716,33.39999999999999,99.14888905572218,31.933333333333323C98.27597208967718,30.466666666666654,97.40305512363219,30.333333333333318,96.5301381575872,29.799999999999983C95.6572211915422,29.26666666666665,94.78430422549721,28.333333333333314,93.91138725945221,27.36666666666665C93.03847029340723,26.399999999999984,92.16555332736223,25.399999999999984,91.29263636131725,25.266666666666648C90.41971939527224,25.133333333333315,89.54680242922726,25.866666666666646,88.67388546318226,26.466666666666647C87.80096849713726,27.06666666666665,86.92805153109228,27.533333333333314,86.0551345650473,28.966666666666647C85.18221759900231,30.399999999999984,84.3093006329573,32.79999999999998,83.43638366691232,34.466666666666654C82.56346670086732,36.133333333333326,81.69054973482234,37.066666666666656,80.81763276877736,38.36666666666666C79.94471580273236,39.66666666666666,79.07179883668736,41.33333333333333,78.19888187064238,42.533333333333324C77.32596490459738,43.73333333333333,76.4530479385524,44.46666666666666,75.5801309725074,45.43333333333333C74.70721400646242,46.39999999999999,73.83429704041743,47.599999999999994,72.96138007437243,48.199999999999996C72.08846310832743,48.8,71.21554614228245,48.8,70.34262917623747,48.93333333333333C69.46971221019247,49.06666666666666,68.59679524414747,49.33333333333333,67.72387827810249,49.43333333333333C66.85096131205749,49.53333333333333,65.9780443460125,49.46666666666666,65.54158586298999,49.43333333333333L65.1051273799675,49.4\"></path></g><rect class=\"boxplot fill\" x=\"42.5\" width=\"14.999999999999993\" y=\"84.46161186416882\" height=\"11.272485253886032\"></rect><circle class=\"boxplot mean\" cx=\"50\" cy=\"89.95484236298552\" r=\"3\"></circle><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"103.05946055762169\" y2=\"103.05946055762169\"></line><line class=\"boxplot median\" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"89.94974820168278\" y2=\"89.94974820168278\"></line><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"76.44888698533293\" y2=\"76.44888698533293\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"103.05946055762169\" y2=\"95.73409711805485\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"84.46161186416882\" y2=\"76.44888698533293\"></line><rect class=\"boxplot\" x=\"42.5\" width=\"14.999999999999993\" y=\"84.46161186416882\" height=\"11.272485253886032\"></rect></g><g transform=\"translate(470,0)\"><g transform=\"rotate(90,0,0) translate(0,-100)\"><path class=\"area\" d=\"M140.22608427618988,49.8L139.4300609225557,49.69999999999999C138.63403756892154,49.599999999999994,137.0419908616532,49.39999999999999,135.44994415438487,49.133333333333326C133.85789744711653,48.86666666666666,132.2658507398482,48.53333333333333,130.67380403257988,48.266666666666666C129.08175732531151,48,127.48971061804318,47.8,125.89766391077484,46.599999999999994C124.3056172035065,45.4,122.71357049623816,43.199999999999996,121.12152378896982,40.699999999999996C119.52947708170149,38.19999999999999,117.93743037443315,35.39999999999999,116.34538366716481,32.466666666666654C114.75333695989647,29.533333333333317,113.16129025262813,26.466666666666647,111.5692435453598,23.533333333333314C109.97719683809146,20.599999999999977,108.38515013082312,17.799999999999976,106.79310342355478,17.599999999999973C105.20105671628644,17.399999999999974,103.6090100090181,19.799999999999976,102.01696330174977,22.49999999999998C100.42491659448143,25.19999999999998,98.83286988721309,28.19999999999998,97.24082317994475,30.13333333333332C95.64877647267642,32.06666666666665,94.05672976540808,32.93333333333332,92.46468305813974,34.29999999999998C90.8726363508714,35.66666666666666,89.28058964360307,37.53333333333332,87.68854293633473,38.533333333333324C86.09649622906639,39.53333333333332,84.50444952179805,39.66666666666666,82.91240281452971,40.23333333333332C81.32035610726138,40.79999999999999,79.72830939999304,41.8,78.1362626927247,42.56666666666666C76.54421598545635,43.33333333333333,74.952169278188,43.86666666666666,73.36012257091966,44.3C71.76807586365132,44.733333333333334,70.17602915638298,45.06666666666666,68.58398244911464,45.56666666666666C66.9919357418463,46.06666666666666,65.39988903457797,46.733333333333334,63.80784232730963,47.166666666666664C62.21579562004129,47.599999999999994,60.62374891277295,47.8,59.031702205504615,48.099999999999994C57.439655498236284,48.4,55.847608790967946,48.8,54.25556208369961,49.06666666666666C52.66351537643126,49.33333333333333,51.071468669162925,49.46666666666666,50.27544531552875,49.53333333333333L49.47942196189459,49.6L49.47942196189459,50L50.275445315528756,49.999999999999986C51.071468669162925,49.99999999999999,52.66351537643126,49.99999999999999,54.2555620836996,49.999999999999986C55.847608790967946,49.99999999999999,57.439655498236284,49.99999999999999,59.03170220550462,49.999999999999986C60.62374891277295,49.99999999999999,62.21579562004129,49.99999999999999,63.80784232730962,49.999999999999986C65.39988903457797,49.99999999999999,66.9919357418463,49.99999999999999,68.58398244911464,49.999999999999986C70.17602915638298,49.99999999999999,71.76807586365132,49.99999999999999,73.36012257091966,49.999999999999986C74.952169278188,49.99999999999999,76.54421598545635,49.99999999999999,78.1362626927247,49.999999999999986C79.72830939999304,49.99999999999999,81.32035610726138,49.99999999999999,82.91240281452971,49.999999999999986C84.50444952179805,49.99999999999999,86.09649622906639,49.99999999999999,87.68854293633473,49.999999999999986C89.28058964360307,49.99999999999999,90.8726363508714,49.99999999999999,92.46468305813974,49.999999999999986C94.05672976540808,49.99999999999999,95.64877647267642,49.99999999999999,97.24082317994475,49.999999999999986C98.83286988721309,49.99999999999999,100.42491659448143,49.99999999999999,102.01696330174977,49.999999999999986C103.6090100090181,49.99999999999999,105.20105671628644,49.99999999999999,106.79310342355478,49.999999999999986C108.38515013082312,49.99999999999999,109.97719683809146,49.99999999999999,111.5692435453598,49.999999999999986C113.16129025262813,49.99999999999999,114.75333695989647,49.99999999999999,116.34538366716481,49.999999999999986C117.93743037443315,49.99999999999999,119.52947708170149,49.99999999999999,121.12152378896982,49.999999999999986C122.71357049623816,49.99999999999999,124.3056172035065,49.99999999999999,125.89766391077484,49.999999999999986C127.48971061804318,49.99999999999999,129.08175732531151,49.99999999999999,130.67380403257988,49.999999999999986C132.2658507398482,49.99999999999999,133.85789744711653,49.99999999999999,135.44994415438487,49.999999999999986C137.0419908616532,49.99999999999999,138.63403756892154,49.99999999999999,139.4300609225557,49.999999999999986L140.22608427618988,50Z\"></path><path class=\"violin\" d=\"M140.22608427618988,49.8L139.4300609225557,49.69999999999999C138.63403756892154,49.599999999999994,137.0419908616532,49.39999999999999,135.44994415438487,49.133333333333326C133.85789744711653,48.86666666666666,132.2658507398482,48.53333333333333,130.67380403257988,48.266666666666666C129.08175732531151,48,127.48971061804318,47.8,125.89766391077484,46.599999999999994C124.3056172035065,45.4,122.71357049623816,43.199999999999996,121.12152378896982,40.699999999999996C119.52947708170149,38.19999999999999,117.93743037443315,35.39999999999999,116.34538366716481,32.466666666666654C114.75333695989647,29.533333333333317,113.16129025262813,26.466666666666647,111.5692435453598,23.533333333333314C109.97719683809146,20.599999999999977,108.38515013082312,17.799999999999976,106.79310342355478,17.599999999999973C105.20105671628644,17.399999999999974,103.6090100090181,19.799999999999976,102.01696330174977,22.49999999999998C100.42491659448143,25.19999999999998,98.83286988721309,28.19999999999998,97.24082317994475,30.13333333333332C95.64877647267642,32.06666666666665,94.05672976540808,32.93333333333332,92.46468305813974,34.29999999999998C90.8726363508714,35.66666666666666,89.28058964360307,37.53333333333332,87.68854293633473,38.533333333333324C86.09649622906639,39.53333333333332,84.50444952179805,39.66666666666666,82.91240281452971,40.23333333333332C81.32035610726138,40.79999999999999,79.72830939999304,41.8,78.1362626927247,42.56666666666666C76.54421598545635,43.33333333333333,74.952169278188,43.86666666666666,73.36012257091966,44.3C71.76807586365132,44.733333333333334,70.17602915638298,45.06666666666666,68.58398244911464,45.56666666666666C66.9919357418463,46.06666666666666,65.39988903457797,46.733333333333334,63.80784232730963,47.166666666666664C62.21579562004129,47.599999999999994,60.62374891277295,47.8,59.031702205504615,48.099999999999994C57.439655498236284,48.4,55.847608790967946,48.8,54.25556208369961,49.06666666666666C52.66351537643126,49.33333333333333,51.071468669162925,49.46666666666666,50.27544531552875,49.53333333333333L49.47942196189459,49.6\"></path></g><g transform=\"rotate(90,0,0) scale(1,-1)\"><path class=\"area\" d=\"M140.22608427618988,49.8L139.4300609225557,49.69999999999999C138.63403756892154,49.599999999999994,137.0419908616532,49.39999999999999,135.44994415438487,49.133333333333326C133.85789744711653,48.86666666666666,132.2658507398482,48.53333333333333,130.67380403257988,48.266666666666666C129.08175732531151,48,127.48971061804318,47.8,125.89766391077484,46.599999999999994C124.3056172035065,45.4,122.71357049623816,43.199999999999996,121.12152378896982,40.699999999999996C119.52947708170149,38.19999999999999,117.93743037443315,35.39999999999999,116.34538366716481,32.466666666666654C114.75333695989647,29.533333333333317,113.16129025262813,26.466666666666647,111.5692435453598,23.533333333333314C109.97719683809146,20.599999999999977,108.38515013082312,17.799999999999976,106.79310342355478,17.599999999999973C105.20105671628644,17.399999999999974,103.6090100090181,19.799999999999976,102.01696330174977,22.49999999999998C100.42491659448143,25.19999999999998,98.83286988721309,28.19999999999998,97.24082317994475,30.13333333333332C95.64877647267642,32.06666666666665,94.05672976540808,32.93333333333332,92.46468305813974,34.29999999999998C90.8726363508714,35.66666666666666,89.28058964360307,37.53333333333332,87.68854293633473,38.533333333333324C86.09649622906639,39.53333333333332,84.50444952179805,39.66666666666666,82.91240281452971,40.23333333333332C81.32035610726138,40.79999999999999,79.72830939999304,41.8,78.1362626927247,42.56666666666666C76.54421598545635,43.33333333333333,74.952169278188,43.86666666666666,73.36012257091966,44.3C71.76807586365132,44.733333333333334,70.17602915638298,45.06666666666666,68.58398244911464,45.56666666666666C66.9919357418463,46.06666666666666,65.39988903457797,46.733333333333334,63.80784232730963,47.166666666666664C62.21579562004129,47.599999999999994,60.62374891277295,47.8,59.031702205504615,48.099999999999994C57.439655498236284,48.4,55.847608790967946,48.8,54.25556208369961,49.06666666666666C52.66351537643126,49.33333333333333,51.071468669162925,49.46666666666666,50.27544531552875,49.53333333333333L49.47942196189459,49.6L49.47942196189459,50L50.275445315528756,49.999999999999986C51.071468669162925,49.99999999999999,52.66351537643126,49.99999999999999,54.2555620836996,49.999999999999986C55.847608790967946,49.99999999999999,57.439655498236284,49.99999999999999,59.03170220550462,49.999999999999986C60.62374891277295,49.99999999999999,62.21579562004129,49.99999999999999,63.80784232730962,49.999999999999986C65.39988903457797,49.99999999999999,66.9919357418463,49.99999999999999,68.58398244911464,49.999999999999986C70.17602915638298,49.99999999999999,71.76807586365132,49.99999999999999,73.36012257091966,49.999999999999986C74.952169278188,49.99999999999999,76.54421598545635,49.99999999999999,78.1362626927247,49.999999999999986C79.72830939999304,49.99999999999999,81.32035610726138,49.99999999999999,82.91240281452971,49.999999999999986C84.50444952179805,49.99999999999999,86.09649622906639,49.99999999999999,87.68854293633473,49.999999999999986C89.28058964360307,49.99999999999999,90.8726363508714,49.99999999999999,92.46468305813974,49.999999999999986C94.05672976540808,49.99999999999999,95.64877647267642,49.99999999999999,97.24082317994475,49.999999999999986C98.83286988721309,49.99999999999999,100.42491659448143,49.99999999999999,102.01696330174977,49.999999999999986C103.6090100090181,49.99999999999999,105.20105671628644,49.99999999999999,106.79310342355478,49.999999999999986C108.38515013082312,49.99999999999999,109.97719683809146,49.99999999999999,111.5692435453598,49.999999999999986C113.16129025262813,49.99999999999999,114.75333695989647,49.99999999999999,116.34538366716481,49.999999999999986C117.93743037443315,49.99999999999999,119.52947708170149,49.99999999999999,121.12152378896982,49.999999999999986C122.71357049623816,49.99999999999999,124.3056172035065,49.99999999999999,125.89766391077484,49.999999999999986C127.48971061804318,49.99999999999999,129.08175732531151,49.99999999999999,130.67380403257988,49.999999999999986C132.2658507398482,49.99999999999999,133.85789744711653,49.99999999999999,135.44994415438487,49.999999999999986C137.0419908616532,49.99999999999999,138.63403756892154,49.99999999999999,139.4300609225557,49.999999999999986L140.22608427618988,50Z\"></path><path class=\"violin\" d=\"M140.22608427618988,49.8L139.4300609225557,49.69999999999999C138.63403756892154,49.599999999999994,137.0419908616532,49.39999999999999,135.44994415438487,49.133333333333326C133.85789744711653,48.86666666666666,132.2658507398482,48.53333333333333,130.67380403257988,48.266666666666666C129.08175732531151,48,127.48971061804318,47.8,125.89766391077484,46.599999999999994C124.3056172035065,45.4,122.71357049623816,43.199999999999996,121.12152378896982,40.699999999999996C119.52947708170149,38.19999999999999,117.93743037443315,35.39999999999999,116.34538366716481,32.466666666666654C114.75333695989647,29.533333333333317,113.16129025262813,26.466666666666647,111.5692435453598,23.533333333333314C109.97719683809146,20.599999999999977,108.38515013082312,17.799999999999976,106.79310342355478,17.599999999999973C105.20105671628644,17.399999999999974,103.6090100090181,19.799999999999976,102.01696330174977,22.49999999999998C100.42491659448143,25.19999999999998,98.83286988721309,28.19999999999998,97.24082317994475,30.13333333333332C95.64877647267642,32.06666666666665,94.05672976540808,32.93333333333332,92.46468305813974,34.29999999999998C90.8726363508714,35.66666666666666,89.28058964360307,37.53333333333332,87.68854293633473,38.533333333333324C86.09649622906639,39.53333333333332,84.50444952179805,39.66666666666666,82.91240281452971,40.23333333333332C81.32035610726138,40.79999999999999,79.72830939999304,41.8,78.1362626927247,42.56666666666666C76.54421598545635,43.33333333333333,74.952169278188,43.86666666666666,73.36012257091966,44.3C71.76807586365132,44.733333333333334,70.17602915638298,45.06666666666666,68.58398244911464,45.56666666666666C66.9919357418463,46.06666666666666,65.39988903457797,46.733333333333334,63.80784232730963,47.166666666666664C62.21579562004129,47.599999999999994,60.62374891277295,47.8,59.031702205504615,48.099999999999994C57.439655498236284,48.4,55.847608790967946,48.8,54.25556208369961,49.06666666666666C52.66351537643126,49.33333333333333,51.071468669162925,49.46666666666666,50.27544531552875,49.53333333333333L49.47942196189459,49.6\"></path></g><rect class=\"boxplot fill\" x=\"42.5\" width=\"14.999999999999993\" y=\"89.94174937759271\" height=\"18.468740528461808\"></rect><circle class=\"boxplot mean\" cx=\"50\" cy=\"97.99858955958842\" r=\"3\"></circle><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"118.50457996538235\" y2=\"118.50457996538235\"></line><line class=\"boxplot median\" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"100.95450642785366\" y2=\"100.95450642785366\"></line><line class=\"boxplot \" x1=\"42.5\" x2=\"57.49999999999999\" y1=\"68.4108579851702\" y2=\"68.4108579851702\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"118.50457996538235\" y2=\"108.41048990605452\"></line><line class=\"boxplot\" x1=\"50\" x2=\"50\" y1=\"89.94174937759271\" y2=\"68.4108579851702\"></line><rect class=\"boxplot\" x=\"42.5\" width=\"14.999999999999993\" y=\"89.94174937759271\" height=\"18.468740528461808\"></rect></g><g class=\"axis\" transform=\"translate(30,0)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,170)\"><line x2=\"-5\" y2=\"0\"></line><text x=\"-8\" y=\"0\" dy=\".32em\" style=\"text-anchor: end; \">-10</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,130)\"><line x2=\"-5\" y2=\"0\"></line><text x=\"-8\" y=\"0\" dy=\".32em\" style=\"text-anchor: end; \">-5</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,90)\"><line x2=\"-5\" y2=\"0\"></line><text x=\"-8\" y=\"0\" dy=\".32em\" style=\"text-anchor: end; \">0</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,50)\"><line x2=\"-5\" y2=\"0\"></line><text x=\"-8\" y=\"0\" dy=\".32em\" style=\"text-anchor: end; \">5</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,10)\"><line x2=\"-5\" y2=\"0\"></line><text x=\"-8\" y=\"0\" dy=\".32em\" style=\"text-anchor: end; \">10</text></g><path class=\"domain\" d=\"M-5,10H0V170H-5\"></path></g></svg></div>\r\n", | |
"<div class=\"d3Output description figure\" style=\"width: 800px\">\r\n", | |
" <b>Figure 1. Example Figure With D3js.</b> Violin plots</div>\r\n", | |
" \r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x4960790>" | |
] | |
} | |
], | |
"prompt_number": 21 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"##Saving and rendering\n", | |
"\n", | |
"You can also save the output to a file by adding `file` to `mode` and providing a path with `fileName` in `render`.\n", | |
"\n", | |
"Furthermore, if the script requires more time to fully render you can change `renderTime` (defaults to 1000ms)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3.render(mode=['html', 'file'], renderTime=10000, fileName='PATH/TO/THE/FILE')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"##Tables\n", | |
"I often use this class to produce tables. Of course you could use `ipy_table` too. The main difference between the two approaches is that `ipy_table` produces tabls in HTML while ipyD3 outputs SVG. In the end, ipyD3 allows for more customization (see below)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3 = d3object(width=800,\n", | |
" height=400,\n", | |
" style='JFTable',\n", | |
" number=1,\n", | |
" d3=None,\n", | |
" title='Example table with d3js',\n", | |
" desc='An example table created created with d3js with data generated with Python.')\n", | |
"data=[[1277.0, 654.0, 288.0, 1976.0, 3281.0, 3089.0, 10336.0, 4650.0, 4441.0, 4670.0, 944.0, 110.0],\n", | |
"[1318.0, 664.0, 418.0, 1952.0, 3581.0, 4574.0, 11457.0, 6139.0, 7078.0, 6561.0, 2354.0, 710.0],\n", | |
"[1783.0, 774.0, 564.0, 1470.0, 3571.0, 3103.0, 9392.0, 5532.0, 5661.0, 4991.0, 2032.0, 680.0],\n", | |
"[1301.0, 604.0, 286.0, 2152.0, 3282.0, 3369.0, 10490.0, 5406.0, 4727.0, 3428.0, 1559.0, 620.0],\n", | |
"[1537.0, 1714.0, 724.0, 4824.0, 5551.0, 8096.0, 16589.0, 13650.0, 9552.0, 13709.0, 2460.0, 720.0],\n", | |
"[5691.0, 2995.0, 1680.0, 11741.0, 16232.0, 14731.0, 43522.0, 32794.0, 26634.0, 31400.0, 7350.0, 3010.0],\n", | |
"[1650.0, 2096.0, 60.0, 50.0, 1180.0, 5602.0, 15728.0, 6874.0, 5115.0, 3510.0, 1390.0, 170.0],\n", | |
"[72.0, 60.0, 60.0, 10.0, 120.0, 172.0, 1092.0, 675.0, 408.0, 360.0, 156.0, 100.0]]\n", | |
"data=[list(i) for i in zip(*data)]\n", | |
"sRows=[['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'Deecember']]\n", | |
"sColumns=[['Prod {0}'.format(i) for i in xrange(1,9)],\n", | |
" [None, '', None, None, 'Group 1', None, None, 'Group 2']]\n", | |
"d3.addSimpleTable( data, \n", | |
" fontSizeCells=[12,],\n", | |
" sRows=sRows,\n", | |
" sColumns=sColumns,\n", | |
" sRowsMargins=[5,50,0],\n", | |
" sColsMargins=[5,20,10],\n", | |
" spacing=0,\n", | |
" addBorders=1,\n", | |
" addOutsideBorders=-1,\n", | |
" rectWidth=45,\n", | |
" rectHeight=0 \n", | |
" )\n", | |
"html=d3.render(mode=['html', 'show'])\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline {\n", | |
" fill: none;\n", | |
" stroke-width: 1px;\n", | |
" stroke: black;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" .heatmapCell text, .heatmapCell rect, .d3Output rect {\n", | |
" font-size: 1em;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" \n", | |
"#-tag-f4374400-09b5-11e3-ac56-b7e39e58f78a{shape-rendering: crispEdges !important;}\n", | |
"</style>\r\n", | |
"<div class=\"d3Output header\" style=\"width: 800px;\">Table 1</div>\r\n", | |
"<div class=\"d3Output title\" style=\"width: 800px;\"> Example Table With D3js</div>\r\n", | |
"<div class=\"d3Output description\" style=\"width: 800px\"> An example table created created with d3js with data generated with Python.</div>\r\n", | |
"<div id=\"id-f4352121-09b5-11e3-bac9-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"400\" style=\"border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: black; \"><g id=\"svgElementid-f4352121-09b5-11e3-bac9-b7e39e58f78a-tag-f4374400-09b5-11e3-ac56-b7e39e58f78a\" transform=\"translate(191.5,48.5)\"><svg class=\"heatmap\" y=\"0\" x=\"0\" id=\"heatmap\"><g class=\"heatmapCell\" transform=\"translate(60,40)\"><rect y=\"22\" fill=\"#a7f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1277</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,62)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">654</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,84)\"><rect y=\"22\" fill=\"#b5fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">288</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,106)\"><rect y=\"22\" fill=\"#9df293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1976</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,128)\"><rect y=\"22\" fill=\"#8aec99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3281</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,150)\"><rect y=\"22\" fill=\"#8ded98\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3089</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,172)\"><rect y=\"22\" fill=\"#43c3b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10336</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,194)\"><rect y=\"22\" fill=\"#78e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4650</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,216)\"><rect y=\"22\" fill=\"#7be59e\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4441</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,238)\"><rect y=\"22\" fill=\"#78e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4670</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,260)\"><rect y=\"22\" fill=\"#abf78e\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">944</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,282)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">110</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,40)\"><rect y=\"22\" fill=\"#a6f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1318</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,62)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">664</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,84)\"><rect y=\"22\" fill=\"#b3f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">418</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,106)\"><rect y=\"22\" fill=\"#9df392\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1952</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,128)\"><rect y=\"22\" fill=\"#86ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3581</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,150)\"><rect y=\"22\" fill=\"#79e59f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4574</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,172)\"><rect y=\"22\" fill=\"#41bcb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">11457</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,194)\"><rect y=\"22\" fill=\"#66dca6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6139</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,216)\"><rect y=\"22\" fill=\"#5dd7a9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">7078</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,238)\"><rect y=\"22\" fill=\"#62daa7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6561</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,260)\"><rect y=\"22\" fill=\"#97f194\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2354</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,282)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">710</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,40)\"><rect y=\"22\" fill=\"#9ff392\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1783</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,62)\"><rect y=\"22\" fill=\"#aef88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">774</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,84)\"><rect y=\"22\" fill=\"#b1f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">564</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,106)\"><rect y=\"22\" fill=\"#a4f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1470</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,128)\"><rect y=\"22\" fill=\"#86ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3571</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,150)\"><rect y=\"22\" fill=\"#8ded98\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3103</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,172)\"><rect y=\"22\" fill=\"#4ac9af\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">9392</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,194)\"><rect y=\"22\" fill=\"#6de0a3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5532</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,216)\"><rect y=\"22\" fill=\"#6cdfa4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5661</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,238)\"><rect y=\"22\" fill=\"#74e3a1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4991</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,260)\"><rect y=\"22\" fill=\"#9cf293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2032</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,282)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">680</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,40)\"><rect y=\"22\" fill=\"#a6f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1301</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,62)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">604</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,84)\"><rect y=\"22\" fill=\"#b5fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">286</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,106)\"><rect y=\"22\" fill=\"#9af293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2152</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,128)\"><rect y=\"22\" fill=\"#8aec99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3282</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,150)\"><rect y=\"22\" fill=\"#89eb99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3369</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,172)\"><rect y=\"22\" fill=\"#43c2b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10490</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,194)\"><rect y=\"22\" fill=\"#6fe0a2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5406</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,216)\"><rect y=\"22\" fill=\"#77e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4727</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,238)\"><rect y=\"22\" fill=\"#88eb99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3428</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,260)\"><rect y=\"22\" fill=\"#a3f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1559</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,282)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">620</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,40)\"><rect y=\"22\" fill=\"#a3f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1537</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,62)\"><rect y=\"22\" fill=\"#a0f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1714</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,84)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">724</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,106)\"><rect y=\"22\" fill=\"#76e3a0\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4824</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,128)\"><rect y=\"22\" fill=\"#6de0a3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5551</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,150)\"><rect y=\"22\" fill=\"#53d0ac\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">8096</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,172)\"><rect y=\"22\" fill=\"#4c99ad\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">16589</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,194)\"><rect y=\"22\" fill=\"#41adb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">13650</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,216)\"><rect y=\"22\" fill=\"#49c8af\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">9552</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,238)\"><rect y=\"22\" fill=\"#41acb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">13709</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,260)\"><rect y=\"22\" fill=\"#96f095\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2460</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,282)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">720</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,40)\"><rect y=\"22\" fill=\"#6bdfa4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5691</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,62)\"><rect y=\"22\" fill=\"#8eed97\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2995</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,84)\"><rect y=\"22\" fill=\"#a1f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1680</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,106)\"><rect y=\"22\" fill=\"#40bab2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">11741</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,128)\"><rect y=\"22\" fill=\"#4a9bae\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">16232</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,150)\"><rect y=\"22\" fill=\"#44a6b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">14731</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,172)\"><rect y=\"22\" fill=\"#210f06\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">43522</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,194)\"><rect y=\"22\" fill=\"#5c3544\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">32794</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,216)\"><rect y=\"22\" fill=\"#6a5673\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">26634</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,238)\"><rect y=\"22\" fill=\"#623c4f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">31400</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,260)\"><rect y=\"22\" fill=\"#5ad5aa\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">7350</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,282)\"><rect y=\"22\" fill=\"#8eed97\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3010</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,40)\"><rect y=\"22\" fill=\"#a1f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1650</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,62)\"><rect y=\"22\" fill=\"#9bf293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2096</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,84)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,106)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">50</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,128)\"><rect y=\"22\" fill=\"#a8f68f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1180</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,150)\"><rect y=\"22\" fill=\"#6ddfa3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5602</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,172)\"><rect y=\"22\" fill=\"#489faf\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">15728</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,194)\"><rect y=\"22\" fill=\"#5fd8a8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6874</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,216)\"><rect y=\"22\" fill=\"#72e2a1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5115</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,238)\"><rect y=\"22\" fill=\"#87ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3510</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,260)\"><rect y=\"22\" fill=\"#a5f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1390</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,282)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">170</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,40)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">72</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,62)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,84)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,106)\"><rect y=\"22\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,128)\"><rect y=\"22\" fill=\"#b7fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">120</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,150)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">172</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,172)\"><rect y=\"22\" fill=\"#a9f68f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1092</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,194)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">675</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,216)\"><rect y=\"22\" fill=\"#b3f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">408</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,238)\"><rect y=\"22\" fill=\"#b4f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">360</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,260)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">156</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,282)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">100</text><polyline points=\"0,0 45,0 45,22 0,22 0,0\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(60,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 1</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(105,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 2</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 3</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(195,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 4</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(240,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 5</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 6</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(330,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 7</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(375,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 8</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(150,0)\"><text x=\"67.5\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Group 1</text><polyline points=\"1.5,15 133.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(285,0)\"><text x=\"67.5\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Group 2</text><polyline points=\"1.5,15 133.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,40)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">January</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,62)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">February</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,84)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">March</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,106)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">April</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,128)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">May</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,150)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">June</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,172)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">July</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,194)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">August</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,216)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">September</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,238)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">October</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,260)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">November</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,282)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">Deecember</text><polyline points=\"55,1.5 55,20.5\"></polyline></g></svg></g></svg></div>\r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x33a9db0>" | |
] | |
} | |
], | |
"prompt_number": 8 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"For a slightly cleaner look you can remove the borders..." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3 = d3object(width=800,\n", | |
" height=400,\n", | |
" style='JFTable',\n", | |
" number=1,\n", | |
" d3=None,\n", | |
" title='Example table with d3js',\n", | |
" desc='An example table created created with d3js with data generated with Python.')\n", | |
"d3.addSimpleTable( data, \n", | |
" fontSizeCells=[12,],\n", | |
" sRows=sRows,\n", | |
" sColumns=sColumns,\n", | |
" sRowsMargins=[5,50,0],\n", | |
" sColsMargins=[5,20,10],\n", | |
" spacing=2,\n", | |
" addBorders=0,\n", | |
" addOutsideBorders=-1,\n", | |
" rectWidth=45,\n", | |
" rectHeight=0 \n", | |
" )\n", | |
"html=d3.render(mode=['html', 'show'])\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline {\n", | |
" fill: none;\n", | |
" stroke-width: 1px;\n", | |
" stroke: black;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" .heatmapCell text, .heatmapCell rect, .d3Output rect {\n", | |
" font-size: 1em;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" \n", | |
"#-tag-f8edc730-09b5-11e3-8c79-b7e39e58f78a{shape-rendering: crispEdges !important;}\n", | |
"</style>\r\n", | |
"<div class=\"d3Output header\" style=\"width: 800px;\">Table 1</div>\r\n", | |
"<div class=\"d3Output title\" style=\"width: 800px;\"> Example Table With D3js</div>\r\n", | |
"<div class=\"d3Output description\" style=\"width: 800px\"> An example table created created with d3js with data generated with Python.</div>\r\n", | |
"<div id=\"id-f8ed5200-09b5-11e3-8236-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"400\" style=\"border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: black; \"><g id=\"svgElementid-f8ed5200-09b5-11e3-8236-b7e39e58f78a-tag-f8edc730-09b5-11e3-8c79-b7e39e58f78a\" transform=\"translate(187,39.5)\"><svg class=\"heatmap\" y=\"0\" x=\"0\" id=\"heatmap\"><g class=\"heatmapCell\" transform=\"translate(60,40)\"><rect y=\"22\" fill=\"#a7f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1277</text></g><g class=\"heatmapCell\" transform=\"translate(60,64)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">654</text></g><g class=\"heatmapCell\" transform=\"translate(60,88)\"><rect y=\"22\" fill=\"#b5fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">288</text></g><g class=\"heatmapCell\" transform=\"translate(60,112)\"><rect y=\"22\" fill=\"#9df293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1976</text></g><g class=\"heatmapCell\" transform=\"translate(60,136)\"><rect y=\"22\" fill=\"#8aec99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3281</text></g><g class=\"heatmapCell\" transform=\"translate(60,160)\"><rect y=\"22\" fill=\"#8ded98\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3089</text></g><g class=\"heatmapCell\" transform=\"translate(60,184)\"><rect y=\"22\" fill=\"#43c3b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10336</text></g><g class=\"heatmapCell\" transform=\"translate(60,208)\"><rect y=\"22\" fill=\"#78e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4650</text></g><g class=\"heatmapCell\" transform=\"translate(60,232)\"><rect y=\"22\" fill=\"#7be59e\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4441</text></g><g class=\"heatmapCell\" transform=\"translate(60,256)\"><rect y=\"22\" fill=\"#78e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4670</text></g><g class=\"heatmapCell\" transform=\"translate(60,280)\"><rect y=\"22\" fill=\"#abf78e\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">944</text></g><g class=\"heatmapCell\" transform=\"translate(60,304)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">110</text></g><g class=\"heatmapCell\" transform=\"translate(107,40)\"><rect y=\"22\" fill=\"#a6f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1318</text></g><g class=\"heatmapCell\" transform=\"translate(107,64)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">664</text></g><g class=\"heatmapCell\" transform=\"translate(107,88)\"><rect y=\"22\" fill=\"#b3f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">418</text></g><g class=\"heatmapCell\" transform=\"translate(107,112)\"><rect y=\"22\" fill=\"#9df392\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1952</text></g><g class=\"heatmapCell\" transform=\"translate(107,136)\"><rect y=\"22\" fill=\"#86ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3581</text></g><g class=\"heatmapCell\" transform=\"translate(107,160)\"><rect y=\"22\" fill=\"#79e59f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4574</text></g><g class=\"heatmapCell\" transform=\"translate(107,184)\"><rect y=\"22\" fill=\"#41bcb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">11457</text></g><g class=\"heatmapCell\" transform=\"translate(107,208)\"><rect y=\"22\" fill=\"#66dca6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6139</text></g><g class=\"heatmapCell\" transform=\"translate(107,232)\"><rect y=\"22\" fill=\"#5dd7a9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">7078</text></g><g class=\"heatmapCell\" transform=\"translate(107,256)\"><rect y=\"22\" fill=\"#62daa7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6561</text></g><g class=\"heatmapCell\" transform=\"translate(107,280)\"><rect y=\"22\" fill=\"#97f194\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2354</text></g><g class=\"heatmapCell\" transform=\"translate(107,304)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">710</text></g><g class=\"heatmapCell\" transform=\"translate(154,40)\"><rect y=\"22\" fill=\"#9ff392\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1783</text></g><g class=\"heatmapCell\" transform=\"translate(154,64)\"><rect y=\"22\" fill=\"#aef88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">774</text></g><g class=\"heatmapCell\" transform=\"translate(154,88)\"><rect y=\"22\" fill=\"#b1f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">564</text></g><g class=\"heatmapCell\" transform=\"translate(154,112)\"><rect y=\"22\" fill=\"#a4f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1470</text></g><g class=\"heatmapCell\" transform=\"translate(154,136)\"><rect y=\"22\" fill=\"#86ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3571</text></g><g class=\"heatmapCell\" transform=\"translate(154,160)\"><rect y=\"22\" fill=\"#8ded98\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3103</text></g><g class=\"heatmapCell\" transform=\"translate(154,184)\"><rect y=\"22\" fill=\"#4ac9af\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">9392</text></g><g class=\"heatmapCell\" transform=\"translate(154,208)\"><rect y=\"22\" fill=\"#6de0a3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5532</text></g><g class=\"heatmapCell\" transform=\"translate(154,232)\"><rect y=\"22\" fill=\"#6cdfa4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5661</text></g><g class=\"heatmapCell\" transform=\"translate(154,256)\"><rect y=\"22\" fill=\"#74e3a1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4991</text></g><g class=\"heatmapCell\" transform=\"translate(154,280)\"><rect y=\"22\" fill=\"#9cf293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2032</text></g><g class=\"heatmapCell\" transform=\"translate(154,304)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">680</text></g><g class=\"heatmapCell\" transform=\"translate(201,40)\"><rect y=\"22\" fill=\"#a6f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1301</text></g><g class=\"heatmapCell\" transform=\"translate(201,64)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">604</text></g><g class=\"heatmapCell\" transform=\"translate(201,88)\"><rect y=\"22\" fill=\"#b5fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">286</text></g><g class=\"heatmapCell\" transform=\"translate(201,112)\"><rect y=\"22\" fill=\"#9af293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2152</text></g><g class=\"heatmapCell\" transform=\"translate(201,136)\"><rect y=\"22\" fill=\"#8aec99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3282</text></g><g class=\"heatmapCell\" transform=\"translate(201,160)\"><rect y=\"22\" fill=\"#89eb99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3369</text></g><g class=\"heatmapCell\" transform=\"translate(201,184)\"><rect y=\"22\" fill=\"#43c2b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10490</text></g><g class=\"heatmapCell\" transform=\"translate(201,208)\"><rect y=\"22\" fill=\"#6fe0a2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5406</text></g><g class=\"heatmapCell\" transform=\"translate(201,232)\"><rect y=\"22\" fill=\"#77e49f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4727</text></g><g class=\"heatmapCell\" transform=\"translate(201,256)\"><rect y=\"22\" fill=\"#88eb99\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3428</text></g><g class=\"heatmapCell\" transform=\"translate(201,280)\"><rect y=\"22\" fill=\"#a3f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1559</text></g><g class=\"heatmapCell\" transform=\"translate(201,304)\"><rect y=\"22\" fill=\"#b0f88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">620</text></g><g class=\"heatmapCell\" transform=\"translate(248,40)\"><rect y=\"22\" fill=\"#a3f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1537</text></g><g class=\"heatmapCell\" transform=\"translate(248,64)\"><rect y=\"22\" fill=\"#a0f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1714</text></g><g class=\"heatmapCell\" transform=\"translate(248,88)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">724</text></g><g class=\"heatmapCell\" transform=\"translate(248,112)\"><rect y=\"22\" fill=\"#76e3a0\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4824</text></g><g class=\"heatmapCell\" transform=\"translate(248,136)\"><rect y=\"22\" fill=\"#6de0a3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5551</text></g><g class=\"heatmapCell\" transform=\"translate(248,160)\"><rect y=\"22\" fill=\"#53d0ac\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">8096</text></g><g class=\"heatmapCell\" transform=\"translate(248,184)\"><rect y=\"22\" fill=\"#4c99ad\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">16589</text></g><g class=\"heatmapCell\" transform=\"translate(248,208)\"><rect y=\"22\" fill=\"#41adb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">13650</text></g><g class=\"heatmapCell\" transform=\"translate(248,232)\"><rect y=\"22\" fill=\"#49c8af\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">9552</text></g><g class=\"heatmapCell\" transform=\"translate(248,256)\"><rect y=\"22\" fill=\"#41acb2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">13709</text></g><g class=\"heatmapCell\" transform=\"translate(248,280)\"><rect y=\"22\" fill=\"#96f095\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2460</text></g><g class=\"heatmapCell\" transform=\"translate(248,304)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">720</text></g><g class=\"heatmapCell\" transform=\"translate(295,40)\"><rect y=\"22\" fill=\"#6bdfa4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5691</text></g><g class=\"heatmapCell\" transform=\"translate(295,64)\"><rect y=\"22\" fill=\"#8eed97\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2995</text></g><g class=\"heatmapCell\" transform=\"translate(295,88)\"><rect y=\"22\" fill=\"#a1f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1680</text></g><g class=\"heatmapCell\" transform=\"translate(295,112)\"><rect y=\"22\" fill=\"#40bab2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">11741</text></g><g class=\"heatmapCell\" transform=\"translate(295,136)\"><rect y=\"22\" fill=\"#4a9bae\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">16232</text></g><g class=\"heatmapCell\" transform=\"translate(295,160)\"><rect y=\"22\" fill=\"#44a6b1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">14731</text></g><g class=\"heatmapCell\" transform=\"translate(295,184)\"><rect y=\"22\" fill=\"#210f06\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">43522</text></g><g class=\"heatmapCell\" transform=\"translate(295,208)\"><rect y=\"22\" fill=\"#5c3544\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">32794</text></g><g class=\"heatmapCell\" transform=\"translate(295,232)\"><rect y=\"22\" fill=\"#6a5673\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">26634</text></g><g class=\"heatmapCell\" transform=\"translate(295,256)\"><rect y=\"22\" fill=\"#623c4f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">31400</text></g><g class=\"heatmapCell\" transform=\"translate(295,280)\"><rect y=\"22\" fill=\"#5ad5aa\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">7350</text></g><g class=\"heatmapCell\" transform=\"translate(295,304)\"><rect y=\"22\" fill=\"#8eed97\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3010</text></g><g class=\"heatmapCell\" transform=\"translate(342,40)\"><rect y=\"22\" fill=\"#a1f491\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1650</text></g><g class=\"heatmapCell\" transform=\"translate(342,64)\"><rect y=\"22\" fill=\"#9bf293\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2096</text></g><g class=\"heatmapCell\" transform=\"translate(342,88)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(342,112)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">50</text></g><g class=\"heatmapCell\" transform=\"translate(342,136)\"><rect y=\"22\" fill=\"#a8f68f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1180</text></g><g class=\"heatmapCell\" transform=\"translate(342,160)\"><rect y=\"22\" fill=\"#6ddfa3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5602</text></g><g class=\"heatmapCell\" transform=\"translate(342,184)\"><rect y=\"22\" fill=\"#489faf\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">15728</text></g><g class=\"heatmapCell\" transform=\"translate(342,208)\"><rect y=\"22\" fill=\"#5fd8a8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6874</text></g><g class=\"heatmapCell\" transform=\"translate(342,232)\"><rect y=\"22\" fill=\"#72e2a1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5115</text></g><g class=\"heatmapCell\" transform=\"translate(342,256)\"><rect y=\"22\" fill=\"#87ea9a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3510</text></g><g class=\"heatmapCell\" transform=\"translate(342,280)\"><rect y=\"22\" fill=\"#a5f590\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1390</text></g><g class=\"heatmapCell\" transform=\"translate(342,304)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">170</text></g><g class=\"heatmapCell\" transform=\"translate(389,40)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">72</text></g><g class=\"heatmapCell\" transform=\"translate(389,64)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,88)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,112)\"><rect y=\"22\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10</text></g><g class=\"heatmapCell\" transform=\"translate(389,136)\"><rect y=\"22\" fill=\"#b7fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">120</text></g><g class=\"heatmapCell\" transform=\"translate(389,160)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">172</text></g><g class=\"heatmapCell\" transform=\"translate(389,184)\"><rect y=\"22\" fill=\"#a9f68f\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1092</text></g><g class=\"heatmapCell\" transform=\"translate(389,208)\"><rect y=\"22\" fill=\"#aff88d\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">675</text></g><g class=\"heatmapCell\" transform=\"translate(389,232)\"><rect y=\"22\" fill=\"#b3f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">408</text></g><g class=\"heatmapCell\" transform=\"translate(389,256)\"><rect y=\"22\" fill=\"#b4f98c\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">360</text></g><g class=\"heatmapCell\" transform=\"translate(389,280)\"><rect y=\"22\" fill=\"#b7fa8b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">156</text></g><g class=\"heatmapCell\" transform=\"translate(389,304)\"><rect y=\"22\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">100</text></g><g class=\"heatmapCell\" transform=\"translate(60,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 1</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(107,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 2</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 3</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(201,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 4</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(248,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 5</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 6</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(342,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 7</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(389,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Prod 8</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Group 1</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Group 2</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,40)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">January</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,64)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">February</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,88)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">March</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,112)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">April</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,136)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">May</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,160)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">June</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,184)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">July</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,208)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">August</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,232)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">September</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,256)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">October</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,280)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">November</text><polyline points=\"55,1.5 55,20.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,304)\"><text x=\"50\" y=\"15.5\" style=\"font-size: 9px; \" text-anchor=\"end\">Deecember</text><polyline points=\"55,1.5 55,20.5\"></polyline></g></svg></g></svg></div>\r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x33a89b0>" | |
] | |
} | |
], | |
"prompt_number": 9 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"But since it is HTML you can easily increase readability of the table!! With _addTable_ instead of _addSimpleTable_. In fact _addSimpleTable_ is just a reference to _addTable_" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3 = d3object(width=800,\n", | |
" height=400,\n", | |
" style='JFTable',\n", | |
" number=1,\n", | |
" d3=None,\n", | |
" title='Example table with d3js',\n", | |
" desc='An example table created created with d3js with data generated with Python.')\n", | |
"d3.addTable(data,\n", | |
" dataAdd=[],\n", | |
" pVals=-1,\n", | |
" fontSizeCells=[11,5],\n", | |
" fontSizeCellsLabels=[11,5],\n", | |
" sRows=sRows,\n", | |
" sColumns=sColumns,\n", | |
" sRowsMargins=[5,50,0],\n", | |
" sColsMargins=[5,20,10],\n", | |
" fontSizeHeaders=11,\n", | |
" shrinkHeadersBorders=1.5,\n", | |
" heatmapIgnoreText=1,\n", | |
" varLabels=[],\n", | |
" heatmap={\n", | |
" 'draw':1,\n", | |
" 'spacing':2,\n", | |
" 'fillProportion':21,\n", | |
" 'addText':1,\n", | |
" 'addTextRows':1,\n", | |
" 'addBorders':0,\n", | |
" 'addOutsideBorders':-1,\n", | |
" 'rectWidth':45,\n", | |
" 'rectHeight':21,\n", | |
" },\n", | |
" smallHeatmap={\n", | |
" 'draw':0,\n", | |
" 'spacing':0,\n", | |
" 'fillProportion':5,\n", | |
" 'addText':0,\n", | |
" 'addTextRows':0,\n", | |
" 'addBorders':1,\n", | |
" 'addOutsideBorders':-1,\n", | |
" 'rectWidth':5,\n", | |
" 'rectHeight':5,\n", | |
" },\n", | |
" heatmapLegendVert=1,\n", | |
" legend= {\n", | |
" 'draw':0,\n", | |
" 'width':2,\n", | |
" 'height':15,\n", | |
" 'rectWidth':60,\n", | |
" 'rectHeight':60\n", | |
" },\n", | |
" rightPaneOffset=0,\n", | |
" colorDomainAuto=1,\n", | |
" #colorDomainAutoIgnoreRows=[5],\n", | |
" colorRange=['#ffffff', '#dddddd', '#cccccc', '#bbbbbb', '#aaaaaa', '#999999']\n", | |
")\n", | |
"d3 = d3object(width=800,\n", | |
" height=400,\n", | |
" style='JFTable',\n", | |
" number=1,\n", | |
" d3=d3,\n", | |
" keepTempDir='c:\\sandbox',\n", | |
" title='Example table with d3js with a small heatmap',\n", | |
" desc='An example table created created with d3js with data generated with Python.')\n", | |
"d3.addTable(data,\n", | |
" dataAdd=[],\n", | |
" pVals=-1,\n", | |
" fontSizeCells=[11,5],\n", | |
" fontSizeCellsLabels=[11,5],\n", | |
" sRows=sRows,\n", | |
" sColumns=sColumns,\n", | |
" sRowsMargins=[5,50,0],\n", | |
" sColsMargins=[5,20,10],\n", | |
" fontSizeHeaders=11,\n", | |
" shrinkHeadersBorders=1.5,\n", | |
" heatmapIgnoreText=1,\n", | |
" varLabels=['Sales'],\n", | |
" heatmap={\n", | |
" 'draw':1,\n", | |
" 'spacing':2,\n", | |
" 'fillProportion':0,\n", | |
" 'addText':1,\n", | |
" 'addTextRows':1,\n", | |
" 'addBorders':0,\n", | |
" 'addOutsideBorders':-1,\n", | |
" 'rectWidth':45,\n", | |
" 'rectHeight':21,\n", | |
" },\n", | |
" smallHeatmap={\n", | |
" 'draw':1,\n", | |
" 'spacing':0,\n", | |
" 'fillProportion':10,\n", | |
" 'addText':0,\n", | |
" 'addTextRows':0,\n", | |
" 'addBorders':0,\n", | |
" 'addOutsideBorders':0,\n", | |
" 'rectWidth':10,\n", | |
" 'rectHeight':10,\n", | |
" },\n", | |
" heatmapLegendVert=1,\n", | |
" legend= {\n", | |
" 'draw':1,\n", | |
" 'width':2,\n", | |
" 'height':15,\n", | |
" 'rectWidth':45,\n", | |
" 'rectHeight':30\n", | |
" },\n", | |
" rightPaneOffset=100,\n", | |
" colorDomainAuto=1,\n", | |
" colorRange=['#ffffff', '#eeeeee', '#aaaaaa', '#111111', '#000000']\n", | |
")\n", | |
"html=d3.render(mode=['html', 'show'])\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline {\n", | |
" fill: none;\n", | |
" stroke-width: 1px;\n", | |
" stroke: black;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" .heatmapCell text, .heatmapCell rect, .d3Output rect {\n", | |
" font-size: 1em;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" \n", | |
"#-tag-fd89e48f-09b5-11e3-8f0b-b7e39e58f78a{shape-rendering: crispEdges !important;}\n", | |
"\n", | |
" .heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline {\n", | |
" fill: none;\n", | |
" stroke-width: 1px;\n", | |
" stroke: black;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" .heatmapCell text, .heatmapCell rect, .d3Output rect {\n", | |
" font-size: 1em;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" \n", | |
"#-tag-0079635e-09b6-11e3-9ecf-b7e39e58f78a{shape-rendering: crispEdges !important;}\n", | |
"</style>\r\n", | |
"\r\n", | |
"<div class=\"d3Output header\" style=\"width: 800px;\">Table 1</div>\r\n", | |
"<div class=\"d3Output title\" style=\"width: 800px;\"> Example Table With D3js</div>\r\n", | |
"<div class=\"d3Output description\" style=\"width: 800px\"> An example table created created with d3js with data generated with Python.</div>\r\n", | |
"<div id=\"id-fd896f5e-09b5-11e3-96c8-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"400\" style=\"border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: black; \"><g id=\"svgElementid-fd896f5e-09b5-11e3-96c8-b7e39e58f78a-tag-fd89e48f-09b5-11e3-8f0b-b7e39e58f78a\" transform=\"translate(132.25,41.5)\"><svg class=\"heatmap\" y=\"0\" x=\"0\" id=\"heatmap\"><g class=\"heatmapCell\" transform=\"translate(60,40)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1277</text></g><g class=\"heatmapCell\" transform=\"translate(60,63)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">654</text></g><g class=\"heatmapCell\" transform=\"translate(60,86)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">288</text></g><g class=\"heatmapCell\" transform=\"translate(60,109)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1976</text></g><g class=\"heatmapCell\" transform=\"translate(60,132)\"><rect y=\"0\" fill=\"#f0f0f0\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3281</text></g><g class=\"heatmapCell\" transform=\"translate(60,155)\"><rect y=\"0\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3089</text></g><g class=\"heatmapCell\" transform=\"translate(60,178)\"><rect y=\"0\" fill=\"#d6d6d6\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10336</text></g><g class=\"heatmapCell\" transform=\"translate(60,201)\"><rect y=\"0\" fill=\"#e9e9e9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4650</text></g><g class=\"heatmapCell\" transform=\"translate(60,224)\"><rect y=\"0\" fill=\"#eaeaea\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4441</text></g><g class=\"heatmapCell\" transform=\"translate(60,247)\"><rect y=\"0\" fill=\"#e9e9e9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4670</text></g><g class=\"heatmapCell\" transform=\"translate(60,270)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">944</text></g><g class=\"heatmapCell\" transform=\"translate(60,293)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">110</text></g><g class=\"heatmapCell\" transform=\"translate(107,40)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1318</text></g><g class=\"heatmapCell\" transform=\"translate(107,63)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">664</text></g><g class=\"heatmapCell\" transform=\"translate(107,86)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">418</text></g><g class=\"heatmapCell\" transform=\"translate(107,109)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1952</text></g><g class=\"heatmapCell\" transform=\"translate(107,132)\"><rect y=\"0\" fill=\"#eeeeee\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3581</text></g><g class=\"heatmapCell\" transform=\"translate(107,155)\"><rect y=\"0\" fill=\"#eaeaea\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4574</text></g><g class=\"heatmapCell\" transform=\"translate(107,178)\"><rect y=\"0\" fill=\"#d3d3d3\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">11457</text></g><g class=\"heatmapCell\" transform=\"translate(107,201)\"><rect y=\"0\" fill=\"#e2e2e2\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6139</text></g><g class=\"heatmapCell\" transform=\"translate(107,224)\"><rect y=\"0\" fill=\"#dedede\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">7078</text></g><g class=\"heatmapCell\" transform=\"translate(107,247)\"><rect y=\"0\" fill=\"#e0e0e0\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6561</text></g><g class=\"heatmapCell\" transform=\"translate(107,270)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2354</text></g><g class=\"heatmapCell\" transform=\"translate(107,293)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">710</text></g><g class=\"heatmapCell\" transform=\"translate(154,40)\"><rect y=\"0\" fill=\"#f7f7f7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1783</text></g><g class=\"heatmapCell\" transform=\"translate(154,63)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">774</text></g><g class=\"heatmapCell\" transform=\"translate(154,86)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">564</text></g><g class=\"heatmapCell\" transform=\"translate(154,109)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1470</text></g><g class=\"heatmapCell\" transform=\"translate(154,132)\"><rect y=\"0\" fill=\"#eeeeee\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3571</text></g><g class=\"heatmapCell\" transform=\"translate(154,155)\"><rect y=\"0\" fill=\"#f0f0f0\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3103</text></g><g class=\"heatmapCell\" transform=\"translate(154,178)\"><rect y=\"0\" fill=\"#d8d8d8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">9392</text></g><g class=\"heatmapCell\" transform=\"translate(154,201)\"><rect y=\"0\" fill=\"#e5e5e5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5532</text></g><g class=\"heatmapCell\" transform=\"translate(154,224)\"><rect y=\"0\" fill=\"#e5e5e5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5661</text></g><g class=\"heatmapCell\" transform=\"translate(154,247)\"><rect y=\"0\" fill=\"#e8e8e8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4991</text></g><g class=\"heatmapCell\" transform=\"translate(154,270)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2032</text></g><g class=\"heatmapCell\" transform=\"translate(154,293)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">680</text></g><g class=\"heatmapCell\" transform=\"translate(201,40)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1301</text></g><g class=\"heatmapCell\" transform=\"translate(201,63)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">604</text></g><g class=\"heatmapCell\" transform=\"translate(201,86)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">286</text></g><g class=\"heatmapCell\" transform=\"translate(201,109)\"><rect y=\"0\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2152</text></g><g class=\"heatmapCell\" transform=\"translate(201,132)\"><rect y=\"0\" fill=\"#f0f0f0\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3282</text></g><g class=\"heatmapCell\" transform=\"translate(201,155)\"><rect y=\"0\" fill=\"#efefef\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3369</text></g><g class=\"heatmapCell\" transform=\"translate(201,178)\"><rect y=\"0\" fill=\"#d5d5d5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10490</text></g><g class=\"heatmapCell\" transform=\"translate(201,201)\"><rect y=\"0\" fill=\"#e6e6e6\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5406</text></g><g class=\"heatmapCell\" transform=\"translate(201,224)\"><rect y=\"0\" fill=\"#e9e9e9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4727</text></g><g class=\"heatmapCell\" transform=\"translate(201,247)\"><rect y=\"0\" fill=\"#efefef\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3428</text></g><g class=\"heatmapCell\" transform=\"translate(201,270)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1559</text></g><g class=\"heatmapCell\" transform=\"translate(201,293)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">620</text></g><g class=\"heatmapCell\" transform=\"translate(248,40)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1537</text></g><g class=\"heatmapCell\" transform=\"translate(248,63)\"><rect y=\"0\" fill=\"#f7f7f7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1714</text></g><g class=\"heatmapCell\" transform=\"translate(248,86)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">724</text></g><g class=\"heatmapCell\" transform=\"translate(248,109)\"><rect y=\"0\" fill=\"#e8e8e8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4824</text></g><g class=\"heatmapCell\" transform=\"translate(248,132)\"><rect y=\"0\" fill=\"#e5e5e5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5551</text></g><g class=\"heatmapCell\" transform=\"translate(248,155)\"><rect y=\"0\" fill=\"#dbdbdb\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">8096</text></g><g class=\"heatmapCell\" transform=\"translate(248,178)\"><rect y=\"0\" fill=\"#c7c7c7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">16589</text></g><g class=\"heatmapCell\" transform=\"translate(248,201)\"><rect y=\"0\" fill=\"#cecece\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">13650</text></g><g class=\"heatmapCell\" transform=\"translate(248,224)\"><rect y=\"0\" fill=\"#d8d8d8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">9552</text></g><g class=\"heatmapCell\" transform=\"translate(248,247)\"><rect y=\"0\" fill=\"#cecece\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">13709</text></g><g class=\"heatmapCell\" transform=\"translate(248,270)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2460</text></g><g class=\"heatmapCell\" transform=\"translate(248,293)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">720</text></g><g class=\"heatmapCell\" transform=\"translate(295,40)\"><rect y=\"0\" fill=\"#e4e4e4\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5691</text></g><g class=\"heatmapCell\" transform=\"translate(295,63)\"><rect y=\"0\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2995</text></g><g class=\"heatmapCell\" transform=\"translate(295,86)\"><rect y=\"0\" fill=\"#f7f7f7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1680</text></g><g class=\"heatmapCell\" transform=\"translate(295,109)\"><rect y=\"0\" fill=\"#d3d3d3\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">11741</text></g><g class=\"heatmapCell\" transform=\"translate(295,132)\"><rect y=\"0\" fill=\"#c8c8c8\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">16232</text></g><g class=\"heatmapCell\" transform=\"translate(295,155)\"><rect y=\"0\" fill=\"#cbcbcb\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">14731</text></g><g class=\"heatmapCell\" transform=\"translate(295,178)\"><rect y=\"0\" fill=\"#888888\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">43522</text></g><g class=\"heatmapCell\" transform=\"translate(295,201)\"><rect y=\"0\" fill=\"#a1a1a1\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">32794</text></g><g class=\"heatmapCell\" transform=\"translate(295,224)\"><rect y=\"0\" fill=\"#b0b0b0\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">26634</text></g><g class=\"heatmapCell\" transform=\"translate(295,247)\"><rect y=\"0\" fill=\"#a4a4a4\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">31400</text></g><g class=\"heatmapCell\" transform=\"translate(295,270)\"><rect y=\"0\" fill=\"#dddddd\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">7350</text></g><g class=\"heatmapCell\" transform=\"translate(295,293)\"><rect y=\"0\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3010</text></g><g class=\"heatmapCell\" transform=\"translate(342,40)\"><rect y=\"0\" fill=\"#f7f7f7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1650</text></g><g class=\"heatmapCell\" transform=\"translate(342,63)\"><rect y=\"0\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2096</text></g><g class=\"heatmapCell\" transform=\"translate(342,86)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(342,109)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">50</text></g><g class=\"heatmapCell\" transform=\"translate(342,132)\"><rect y=\"0\" fill=\"#fafafa\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1180</text></g><g class=\"heatmapCell\" transform=\"translate(342,155)\"><rect y=\"0\" fill=\"#e5e5e5\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5602</text></g><g class=\"heatmapCell\" transform=\"translate(342,178)\"><rect y=\"0\" fill=\"#c9c9c9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">15728</text></g><g class=\"heatmapCell\" transform=\"translate(342,201)\"><rect y=\"0\" fill=\"#dfdfdf\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6874</text></g><g class=\"heatmapCell\" transform=\"translate(342,224)\"><rect y=\"0\" fill=\"#e7e7e7\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5115</text></g><g class=\"heatmapCell\" transform=\"translate(342,247)\"><rect y=\"0\" fill=\"#efefef\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3510</text></g><g class=\"heatmapCell\" transform=\"translate(342,270)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1390</text></g><g class=\"heatmapCell\" transform=\"translate(342,293)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">170</text></g><g class=\"heatmapCell\" transform=\"translate(389,40)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">72</text></g><g class=\"heatmapCell\" transform=\"translate(389,63)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,86)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,109)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10</text></g><g class=\"heatmapCell\" transform=\"translate(389,132)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">120</text></g><g class=\"heatmapCell\" transform=\"translate(389,155)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">172</text></g><g class=\"heatmapCell\" transform=\"translate(389,178)\"><rect y=\"0\" fill=\"#fafafa\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1092</text></g><g class=\"heatmapCell\" transform=\"translate(389,201)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">675</text></g><g class=\"heatmapCell\" transform=\"translate(389,224)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">408</text></g><g class=\"heatmapCell\" transform=\"translate(389,247)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">360</text></g><g class=\"heatmapCell\" transform=\"translate(389,270)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">156</text></g><g class=\"heatmapCell\" transform=\"translate(389,293)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"21\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">100</text></g><g class=\"heatmapCell\" transform=\"translate(60,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 1</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(107,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 2</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 3</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(201,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 4</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(248,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 5</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 6</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(342,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 7</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(389,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 8</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 11px; \" text-anchor=\"middle\">Group 1</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 11px; \" text-anchor=\"middle\">Group 2</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,40)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">January</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,63)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">February</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,86)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">March</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,109)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">April</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,132)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">May</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,155)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">June</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,178)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">July</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,201)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">August</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,224)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">September</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,247)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">October</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,270)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">November</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,293)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">Deecember</text><polyline points=\"55,1.5 55,19.5\"></polyline></g></svg><svg y=\"40\" x=\"456\" id=\"vertLegend\" style=\"opacity: 0.01; \"><rect y=\"-1\" fill=\"#ffffff\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"0\" fill=\"#fefefe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"1\" fill=\"#fefefe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"2\" fill=\"#fdfdfd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"3\" fill=\"#fcfcfc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"4\" fill=\"#fbfbfb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"5\" fill=\"#fbfbfb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"6\" fill=\"#fafafa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"7\" fill=\"#f9f9f9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"8\" fill=\"#f8f8f8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"9\" fill=\"#f8f8f8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"10\" fill=\"#f7f7f7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"11\" fill=\"#f6f6f6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"12\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"13\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"14\" fill=\"#f4f4f4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"15\" fill=\"#f3f3f3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"16\" fill=\"#f2f2f2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"17\" fill=\"#f2f2f2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"18\" fill=\"#f1f1f1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"19\" fill=\"#f0f0f0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"20\" fill=\"#efefef\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"21\" fill=\"#efefef\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"22\" fill=\"#eeeeee\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"23\" fill=\"#ededed\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"24\" fill=\"#ededed\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"25\" fill=\"#ececec\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"26\" fill=\"#ebebeb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"27\" fill=\"#eaeaea\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"28\" fill=\"#eaeaea\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"29\" fill=\"#e9e9e9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"30\" fill=\"#e8e8e8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"31\" fill=\"#e7e7e7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"32\" fill=\"#e7e7e7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"33\" fill=\"#e6e6e6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"34\" fill=\"#e5e5e5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"35\" fill=\"#e4e4e4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"36\" fill=\"#e4e4e4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"37\" fill=\"#e3e3e3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"38\" fill=\"#e2e2e2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"39\" fill=\"#e1e1e1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"40\" fill=\"#e1e1e1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"41\" fill=\"#e0e0e0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"42\" fill=\"#dfdfdf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"43\" fill=\"#dedede\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"44\" fill=\"#dedede\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"45\" fill=\"#dddddd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"46\" fill=\"#dddddd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"47\" fill=\"#dcdcdc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"48\" fill=\"#dcdcdc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"49\" fill=\"#dcdcdc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"50\" fill=\"#dbdbdb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"51\" fill=\"#dbdbdb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"52\" fill=\"#dadada\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"53\" fill=\"#dadada\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"54\" fill=\"#dadada\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"55\" fill=\"#d9d9d9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"56\" fill=\"#d9d9d9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"57\" fill=\"#d9d9d9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"58\" fill=\"#d8d8d8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"59\" fill=\"#d8d8d8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"60\" fill=\"#d7d7d7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"61\" fill=\"#d7d7d7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"62\" fill=\"#d7d7d7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"63\" fill=\"#d6d6d6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"64\" fill=\"#d6d6d6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"65\" fill=\"#d6d6d6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"66\" fill=\"#d5d5d5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"67\" fill=\"#d5d5d5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"68\" fill=\"#d5d5d5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"69\" fill=\"#d4d4d4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"70\" fill=\"#d4d4d4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"71\" fill=\"#d3d3d3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"72\" fill=\"#d3d3d3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"73\" fill=\"#d3d3d3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"74\" fill=\"#d2d2d2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"75\" fill=\"#d2d2d2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"76\" fill=\"#d2d2d2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"77\" fill=\"#d1d1d1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"78\" fill=\"#d1d1d1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"79\" fill=\"#d0d0d0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"80\" fill=\"#d0d0d0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"81\" fill=\"#d0d0d0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"82\" fill=\"#cfcfcf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"83\" fill=\"#cfcfcf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"84\" fill=\"#cfcfcf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"85\" fill=\"#cecece\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"86\" fill=\"#cecece\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"87\" fill=\"#cdcdcd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"88\" fill=\"#cdcdcd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"89\" fill=\"#cdcdcd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"90\" fill=\"#cccccc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"91\" fill=\"#cccccc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"92\" fill=\"#cccccc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"93\" fill=\"#cbcbcb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"94\" fill=\"#cbcbcb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"95\" fill=\"#cbcbcb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"96\" fill=\"#cacaca\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"97\" fill=\"#cacaca\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"98\" fill=\"#c9c9c9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"99\" fill=\"#c9c9c9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"100\" fill=\"#c9c9c9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"101\" fill=\"#c8c8c8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"102\" fill=\"#c8c8c8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"103\" fill=\"#c8c8c8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"104\" fill=\"#c7c7c7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"105\" fill=\"#c7c7c7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"106\" fill=\"#c6c6c6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"107\" fill=\"#c6c6c6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"108\" fill=\"#c6c6c6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"109\" fill=\"#c5c5c5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"110\" fill=\"#c5c5c5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"111\" fill=\"#c5c5c5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"112\" fill=\"#c4c4c4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"113\" fill=\"#c4c4c4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"114\" fill=\"#c4c4c4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"115\" fill=\"#c3c3c3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"116\" fill=\"#c3c3c3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"117\" fill=\"#c2c2c2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"118\" fill=\"#c2c2c2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"119\" fill=\"#c2c2c2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"120\" fill=\"#c1c1c1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"121\" fill=\"#c1c1c1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"122\" fill=\"#c1c1c1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"123\" fill=\"#c0c0c0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"124\" fill=\"#c0c0c0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"125\" fill=\"#bfbfbf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"126\" fill=\"#bfbfbf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"127\" fill=\"#bfbfbf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"128\" fill=\"#bebebe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"129\" fill=\"#bebebe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"130\" fill=\"#bebebe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"131\" fill=\"#bdbdbd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"132\" fill=\"#bdbdbd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"133\" fill=\"#bcbcbc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"134\" fill=\"#bcbcbc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"135\" fill=\"#bcbcbc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"136\" fill=\"#bbbbbb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"137\" fill=\"#bbbbbb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"138\" fill=\"#bbbbbb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"139\" fill=\"#bababa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"140\" fill=\"#bababa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"141\" fill=\"#bababa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"142\" fill=\"#b9b9b9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"143\" fill=\"#b9b9b9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"144\" fill=\"#b8b8b8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"145\" fill=\"#b8b8b8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"146\" fill=\"#b8b8b8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"147\" fill=\"#b7b7b7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"148\" fill=\"#b7b7b7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"149\" fill=\"#b7b7b7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"150\" fill=\"#b6b6b6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"151\" fill=\"#b6b6b6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"152\" fill=\"#b5b5b5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"153\" fill=\"#b5b5b5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"154\" fill=\"#b5b5b5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"155\" fill=\"#b4b4b4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"156\" fill=\"#b4b4b4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"157\" fill=\"#b4b4b4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"158\" fill=\"#b3b3b3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"159\" fill=\"#b3b3b3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"160\" fill=\"#b3b3b3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"161\" fill=\"#b2b2b2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"162\" fill=\"#b2b2b2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"163\" fill=\"#b1b1b1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"164\" fill=\"#b1b1b1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"165\" fill=\"#b1b1b1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"166\" fill=\"#b0b0b0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"167\" fill=\"#b0b0b0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"168\" fill=\"#b0b0b0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"169\" fill=\"#afafaf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"170\" fill=\"#afafaf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"171\" fill=\"#aeaeae\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"172\" fill=\"#aeaeae\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"173\" fill=\"#aeaeae\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"174\" fill=\"#adadad\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"175\" fill=\"#adadad\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"176\" fill=\"#adadad\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"177\" fill=\"#acacac\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"178\" fill=\"#acacac\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"179\" fill=\"#ababab\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"180\" fill=\"#ababab\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"181\" fill=\"#ababab\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"182\" fill=\"#aaaaaa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"183\" fill=\"#aaaaaa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"184\" fill=\"#aaaaaa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"185\" fill=\"#a9a9a9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"186\" fill=\"#a9a9a9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"187\" fill=\"#a9a9a9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"188\" fill=\"#a8a8a8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"189\" fill=\"#a8a8a8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"190\" fill=\"#a7a7a7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"191\" fill=\"#a7a7a7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"192\" fill=\"#a7a7a7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"193\" fill=\"#a6a6a6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"194\" fill=\"#a6a6a6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"195\" fill=\"#a6a6a6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"196\" fill=\"#a5a5a5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"197\" fill=\"#a5a5a5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"198\" fill=\"#a4a4a4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"199\" fill=\"#a4a4a4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"200\" fill=\"#a4a4a4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"201\" fill=\"#a3a3a3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"202\" fill=\"#a3a3a3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"203\" fill=\"#a3a3a3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"204\" fill=\"#a2a2a2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"205\" fill=\"#a2a2a2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"206\" fill=\"#a2a2a2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"207\" fill=\"#a1a1a1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"208\" fill=\"#a1a1a1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"209\" fill=\"#a0a0a0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"210\" fill=\"#a0a0a0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"211\" fill=\"#a0a0a0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"212\" fill=\"#9f9f9f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"213\" fill=\"#9f9f9f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"214\" fill=\"#9f9f9f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"215\" fill=\"#9e9e9e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"216\" fill=\"#9e9e9e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"217\" fill=\"#9d9d9d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"218\" fill=\"#9d9d9d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"219\" fill=\"#9d9d9d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"220\" fill=\"#9c9c9c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"221\" fill=\"#9c9c9c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"222\" fill=\"#9c9c9c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"223\" fill=\"#9b9b9b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"224\" fill=\"#9b9b9b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"225\" fill=\"#9a9a9a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"226\" fill=\"#9a9a9a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"227\" fill=\"#9a9a9a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"228\" fill=\"#999999\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"229\" fill=\"#999999\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"230\" fill=\"#999999\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"231\" fill=\"#989898\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"232\" fill=\"#989898\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"233\" fill=\"#989898\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"234\" fill=\"#979797\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"235\" fill=\"#979797\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"236\" fill=\"#969696\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"237\" fill=\"#969696\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"238\" fill=\"#969696\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"239\" fill=\"#959595\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"240\" fill=\"#959595\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"241\" fill=\"#959595\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"242\" fill=\"#949494\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"243\" fill=\"#949494\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"244\" fill=\"#939393\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"245\" fill=\"#939393\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"246\" fill=\"#939393\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"247\" fill=\"#929292\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"248\" fill=\"#929292\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"249\" fill=\"#929292\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"250\" fill=\"#919191\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"251\" fill=\"#919191\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"252\" fill=\"#919191\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"253\" fill=\"#909090\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"254\" fill=\"#909090\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"255\" fill=\"#8f8f8f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"256\" fill=\"#8f8f8f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"257\" fill=\"#8f8f8f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"258\" fill=\"#8e8e8e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"259\" fill=\"#8e8e8e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"260\" fill=\"#8e8e8e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"261\" fill=\"#8d8d8d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"262\" fill=\"#8d8d8d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"263\" fill=\"#8c8c8c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"264\" fill=\"#8c8c8c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"265\" fill=\"#8c8c8c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"266\" fill=\"#8b8b8b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"267\" fill=\"#8b8b8b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"268\" fill=\"#8b8b8b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"269\" fill=\"#8a8a8a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"270\" fill=\"#8a8a8a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"271\" fill=\"#898989\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"272\" fill=\"#898989\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"273\" fill=\"#898989\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"274\" fill=\"#888888\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"275\" fill=\"#888888\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><g class=\"axis\" transform=\"translate(22.5,0)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,66.07142857142857)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">10,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,127.2039897039897)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">20,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,188.33655083655086)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">30,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,249.469111969112)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">40,000</text></g><path class=\"domain\" d=\"M0,5H0V271H0\"></path></g></svg></g></svg><div style=\"page-break-after:always; display:block; width:1px; height:1px;\"> </div></div>\r\n", | |
"\r\n", | |
"\r\n", | |
"<div class=\"d3Output header\" style=\"width: 800px;\">Table 1</div>\r\n", | |
"<div class=\"d3Output title\" style=\"width: 800px;\"> Example Table With D3js With a Small Heatmap</div>\r\n", | |
"<div class=\"d3Output description\" style=\"width: 800px\"> An example table created created with d3js with data generated with Python.</div>\r\n", | |
"<div id=\"id-fd8a59c0-09b5-11e3-8ad3-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"400\" style=\"border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: black; \"><g id=\"svgElementid-fd8a59c0-09b5-11e3-8ad3-b7e39e58f78a-tag-0079635e-09b6-11e3-9ecf-b7e39e58f78a\" transform=\"translate(100.5,41.5)\"><svg class=\"heatmap\" y=\"0\" x=\"0\" id=\"heatmap\"><g class=\"heatmapCell\" transform=\"translate(60,40)\"><rect y=\"21\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1277</text></g><g class=\"heatmapCell\" transform=\"translate(60,63)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">654</text></g><g class=\"heatmapCell\" transform=\"translate(60,86)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">288</text></g><g class=\"heatmapCell\" transform=\"translate(60,109)\"><rect y=\"21\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1976</text></g><g class=\"heatmapCell\" transform=\"translate(60,132)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3281</text></g><g class=\"heatmapCell\" transform=\"translate(60,155)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3089</text></g><g class=\"heatmapCell\" transform=\"translate(60,178)\"><rect y=\"21\" fill=\"#e1e1e1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10336</text></g><g class=\"heatmapCell\" transform=\"translate(60,201)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4650</text></g><g class=\"heatmapCell\" transform=\"translate(60,224)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4441</text></g><g class=\"heatmapCell\" transform=\"translate(60,247)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4670</text></g><g class=\"heatmapCell\" transform=\"translate(60,270)\"><rect y=\"21\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">944</text></g><g class=\"heatmapCell\" transform=\"translate(60,293)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">110</text></g><g class=\"heatmapCell\" transform=\"translate(107,40)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1318</text></g><g class=\"heatmapCell\" transform=\"translate(107,63)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">664</text></g><g class=\"heatmapCell\" transform=\"translate(107,86)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">418</text></g><g class=\"heatmapCell\" transform=\"translate(107,109)\"><rect y=\"21\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1952</text></g><g class=\"heatmapCell\" transform=\"translate(107,132)\"><rect y=\"21\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3581</text></g><g class=\"heatmapCell\" transform=\"translate(107,155)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4574</text></g><g class=\"heatmapCell\" transform=\"translate(107,178)\"><rect y=\"21\" fill=\"#d9d9d9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">11457</text></g><g class=\"heatmapCell\" transform=\"translate(107,201)\"><rect y=\"21\" fill=\"#f3f3f3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6139</text></g><g class=\"heatmapCell\" transform=\"translate(107,224)\"><rect y=\"21\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">7078</text></g><g class=\"heatmapCell\" transform=\"translate(107,247)\"><rect y=\"21\" fill=\"#f2f2f2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6561</text></g><g class=\"heatmapCell\" transform=\"translate(107,270)\"><rect y=\"21\" fill=\"#fafafa\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2354</text></g><g class=\"heatmapCell\" transform=\"translate(107,293)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">710</text></g><g class=\"heatmapCell\" transform=\"translate(154,40)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1783</text></g><g class=\"heatmapCell\" transform=\"translate(154,63)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">774</text></g><g class=\"heatmapCell\" transform=\"translate(154,86)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">564</text></g><g class=\"heatmapCell\" transform=\"translate(154,109)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1470</text></g><g class=\"heatmapCell\" transform=\"translate(154,132)\"><rect y=\"21\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3571</text></g><g class=\"heatmapCell\" transform=\"translate(154,155)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3103</text></g><g class=\"heatmapCell\" transform=\"translate(154,178)\"><rect y=\"21\" fill=\"#e9e9e9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">9392</text></g><g class=\"heatmapCell\" transform=\"translate(154,201)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5532</text></g><g class=\"heatmapCell\" transform=\"translate(154,224)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5661</text></g><g class=\"heatmapCell\" transform=\"translate(154,247)\"><rect y=\"21\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4991</text></g><g class=\"heatmapCell\" transform=\"translate(154,270)\"><rect y=\"21\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2032</text></g><g class=\"heatmapCell\" transform=\"translate(154,293)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">680</text></g><g class=\"heatmapCell\" transform=\"translate(201,40)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1301</text></g><g class=\"heatmapCell\" transform=\"translate(201,63)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">604</text></g><g class=\"heatmapCell\" transform=\"translate(201,86)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">286</text></g><g class=\"heatmapCell\" transform=\"translate(201,109)\"><rect y=\"21\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2152</text></g><g class=\"heatmapCell\" transform=\"translate(201,132)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3282</text></g><g class=\"heatmapCell\" transform=\"translate(201,155)\"><rect y=\"21\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3369</text></g><g class=\"heatmapCell\" transform=\"translate(201,178)\"><rect y=\"21\" fill=\"#e0e0e0\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10490</text></g><g class=\"heatmapCell\" transform=\"translate(201,201)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5406</text></g><g class=\"heatmapCell\" transform=\"translate(201,224)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4727</text></g><g class=\"heatmapCell\" transform=\"translate(201,247)\"><rect y=\"21\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3428</text></g><g class=\"heatmapCell\" transform=\"translate(201,270)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1559</text></g><g class=\"heatmapCell\" transform=\"translate(201,293)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">620</text></g><g class=\"heatmapCell\" transform=\"translate(248,40)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1537</text></g><g class=\"heatmapCell\" transform=\"translate(248,63)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1714</text></g><g class=\"heatmapCell\" transform=\"translate(248,86)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">724</text></g><g class=\"heatmapCell\" transform=\"translate(248,109)\"><rect y=\"21\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">4824</text></g><g class=\"heatmapCell\" transform=\"translate(248,132)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5551</text></g><g class=\"heatmapCell\" transform=\"translate(248,155)\"><rect y=\"21\" fill=\"#efefef\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">8096</text></g><g class=\"heatmapCell\" transform=\"translate(248,178)\"><rect y=\"21\" fill=\"#b0b0b0\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">16589</text></g><g class=\"heatmapCell\" transform=\"translate(248,201)\"><rect y=\"21\" fill=\"#c7c7c7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">13650</text></g><g class=\"heatmapCell\" transform=\"translate(248,224)\"><rect y=\"21\" fill=\"#e7e7e7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">9552</text></g><g class=\"heatmapCell\" transform=\"translate(248,247)\"><rect y=\"21\" fill=\"#c7c7c7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">13709</text></g><g class=\"heatmapCell\" transform=\"translate(248,270)\"><rect y=\"21\" fill=\"#fafafa\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2460</text></g><g class=\"heatmapCell\" transform=\"translate(248,293)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">720</text></g><g class=\"heatmapCell\" transform=\"translate(295,40)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5691</text></g><g class=\"heatmapCell\" transform=\"translate(295,63)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2995</text></g><g class=\"heatmapCell\" transform=\"translate(295,86)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1680</text></g><g class=\"heatmapCell\" transform=\"translate(295,109)\"><rect y=\"21\" fill=\"#d6d6d6\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">11741</text></g><g class=\"heatmapCell\" transform=\"translate(295,132)\"><rect y=\"21\" fill=\"#b3b3b3\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">16232</text></g><g class=\"heatmapCell\" transform=\"translate(295,155)\"><rect y=\"21\" fill=\"#bfbfbf\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">14731</text></g><g class=\"heatmapCell\" transform=\"translate(295,178)\"><rect y=\"21\" fill=\"#000000\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">43522</text></g><g class=\"heatmapCell\" transform=\"translate(295,201)\"><rect y=\"21\" fill=\"#040404\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">32794</text></g><g class=\"heatmapCell\" transform=\"translate(295,224)\"><rect y=\"21\" fill=\"#101010\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">26634</text></g><g class=\"heatmapCell\" transform=\"translate(295,247)\"><rect y=\"21\" fill=\"#070707\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">31400</text></g><g class=\"heatmapCell\" transform=\"translate(295,270)\"><rect y=\"21\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">7350</text></g><g class=\"heatmapCell\" transform=\"translate(295,293)\"><rect y=\"21\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3010</text></g><g class=\"heatmapCell\" transform=\"translate(342,40)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1650</text></g><g class=\"heatmapCell\" transform=\"translate(342,63)\"><rect y=\"21\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">2096</text></g><g class=\"heatmapCell\" transform=\"translate(342,86)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(342,109)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">50</text></g><g class=\"heatmapCell\" transform=\"translate(342,132)\"><rect y=\"21\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1180</text></g><g class=\"heatmapCell\" transform=\"translate(342,155)\"><rect y=\"21\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5602</text></g><g class=\"heatmapCell\" transform=\"translate(342,178)\"><rect y=\"21\" fill=\"#b7b7b7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">15728</text></g><g class=\"heatmapCell\" transform=\"translate(342,201)\"><rect y=\"21\" fill=\"#f2f2f2\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">6874</text></g><g class=\"heatmapCell\" transform=\"translate(342,224)\"><rect y=\"21\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">5115</text></g><g class=\"heatmapCell\" transform=\"translate(342,247)\"><rect y=\"21\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">3510</text></g><g class=\"heatmapCell\" transform=\"translate(342,270)\"><rect y=\"21\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1390</text></g><g class=\"heatmapCell\" transform=\"translate(342,293)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">170</text></g><g class=\"heatmapCell\" transform=\"translate(389,40)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">72</text></g><g class=\"heatmapCell\" transform=\"translate(389,63)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,86)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">60</text></g><g class=\"heatmapCell\" transform=\"translate(389,109)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">10</text></g><g class=\"heatmapCell\" transform=\"translate(389,132)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">120</text></g><g class=\"heatmapCell\" transform=\"translate(389,155)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">172</text></g><g class=\"heatmapCell\" transform=\"translate(389,178)\"><rect y=\"21\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">1092</text></g><g class=\"heatmapCell\" transform=\"translate(389,201)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">675</text></g><g class=\"heatmapCell\" transform=\"translate(389,224)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">408</text></g><g class=\"heatmapCell\" transform=\"translate(389,247)\"><rect y=\"21\" fill=\"#fefefe\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">360</text></g><g class=\"heatmapCell\" transform=\"translate(389,270)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">156</text></g><g class=\"heatmapCell\" transform=\"translate(389,293)\"><rect y=\"21\" fill=\"#ffffff\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">100</text></g><g class=\"heatmapCell\" transform=\"translate(60,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 1</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(107,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 2</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 3</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(201,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 4</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(248,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 5</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 6</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(342,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 7</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(389,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 11px; \" text-anchor=\"middle\">Prod 8</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(154,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 11px; \" text-anchor=\"middle\">Group 1</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(295,0)\"><text x=\"69.5\" y=\"10\" style=\"font-size: 11px; \" text-anchor=\"middle\">Group 2</text><polyline points=\"1.5,15 137.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,40)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">January</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,63)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">February</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,86)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">March</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,109)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">April</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,132)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">May</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,155)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">June</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,178)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">July</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,201)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">August</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,224)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">September</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,247)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">October</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,270)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">November</text><polyline points=\"55,1.5 55,19.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,293)\"><text x=\"50\" y=\"16\" style=\"font-size: 11px; \" text-anchor=\"end\">Deecember</text><polyline points=\"55,1.5 55,19.5\"></polyline></g></svg><svg class=\"heatmap\" y=\"35\" x=\"509\" id=\"smallHeatmap\"><g class=\"heatmapCell\" transform=\"translate(1,1)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,11)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,21)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,31)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,41)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,51)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,61)\"><rect y=\"0\" fill=\"#e1e1e1\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,71)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,81)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,91)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,101)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(1,111)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,1)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,11)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,21)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,31)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,41)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,51)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,61)\"><rect y=\"0\" fill=\"#d9d9d9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,71)\"><rect y=\"0\" fill=\"#f3f3f3\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,81)\"><rect y=\"0\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,91)\"><rect y=\"0\" fill=\"#f2f2f2\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,101)\"><rect y=\"0\" fill=\"#fafafa\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(11,111)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,1)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,11)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,21)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,31)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,41)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,51)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,61)\"><rect y=\"0\" fill=\"#e9e9e9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,71)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,81)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,91)\"><rect y=\"0\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,101)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(21,111)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,1)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,11)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,21)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,31)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,41)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,51)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,61)\"><rect y=\"0\" fill=\"#e0e0e0\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,71)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,81)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,91)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,101)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(31,111)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,1)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,11)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,21)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,31)\"><rect y=\"0\" fill=\"#f6f6f6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,41)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,51)\"><rect y=\"0\" fill=\"#efefef\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,61)\"><rect y=\"0\" fill=\"#b0b0b0\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,71)\"><rect y=\"0\" fill=\"#c7c7c7\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,81)\"><rect y=\"0\" fill=\"#e7e7e7\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,91)\"><rect y=\"0\" fill=\"#c7c7c7\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,101)\"><rect y=\"0\" fill=\"#fafafa\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(41,111)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,1)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,11)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,21)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,31)\"><rect y=\"0\" fill=\"#d6d6d6\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,41)\"><rect y=\"0\" fill=\"#b3b3b3\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,51)\"><rect y=\"0\" fill=\"#bfbfbf\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,61)\"><rect y=\"0\" fill=\"#000000\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,71)\"><rect y=\"0\" fill=\"#040404\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,81)\"><rect y=\"0\" fill=\"#101010\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,91)\"><rect y=\"0\" fill=\"#070707\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,101)\"><rect y=\"0\" fill=\"#f1f1f1\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(51,111)\"><rect y=\"0\" fill=\"#f9f9f9\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,1)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,11)\"><rect y=\"0\" fill=\"#fbfbfb\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,21)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,31)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,41)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,51)\"><rect y=\"0\" fill=\"#f4f4f4\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,61)\"><rect y=\"0\" fill=\"#b7b7b7\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,71)\"><rect y=\"0\" fill=\"#f2f2f2\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,81)\"><rect y=\"0\" fill=\"#f5f5f5\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,91)\"><rect y=\"0\" fill=\"#f8f8f8\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,101)\"><rect y=\"0\" fill=\"#fcfcfc\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(61,111)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,1)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,11)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,21)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,31)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,41)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,51)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,61)\"><rect y=\"0\" fill=\"#fdfdfd\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,71)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,81)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,91)\"><rect y=\"0\" fill=\"#fefefe\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,101)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><g class=\"heatmapCell\" transform=\"translate(71,111)\"><rect y=\"0\" fill=\"#ffffff\" id=\"heatCell\" width=\"10\" height=\"10\"></rect></g><rect fill=\"none\" stroke=\"#000\" stroke-widtx=\"1px\" x=\"1\" y=\"1\" width=\"79\" height=\"119\"></rect></svg><svg y=\"175\" x=\"509\"><rect x=\"-1\" fill=\"#ffffff\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"0\" fill=\"#fefefe\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"1\" fill=\"#fdfdfd\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"2\" fill=\"#fbfbfb\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"3\" fill=\"#fafafa\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"4\" fill=\"#f9f9f9\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"5\" fill=\"#f8f8f8\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"6\" fill=\"#f7f7f7\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"7\" fill=\"#f5f5f5\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"8\" fill=\"#f4f4f4\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"9\" fill=\"#f3f3f3\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"10\" fill=\"#f2f2f2\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"11\" fill=\"#f0f0f0\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"12\" fill=\"#efefef\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"13\" fill=\"#eeeeee\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"14\" fill=\"#e9e9e9\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"15\" fill=\"#e4e4e4\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"16\" fill=\"#dfdfdf\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"17\" fill=\"#dbdbdb\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"18\" fill=\"#d6d6d6\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"19\" fill=\"#d1d1d1\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"20\" fill=\"#cccccc\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"21\" fill=\"#c7c7c7\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"22\" fill=\"#c2c2c2\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"23\" fill=\"#bdbdbd\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"24\" fill=\"#b9b9b9\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"25\" fill=\"#b4b4b4\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"26\" fill=\"#afafaf\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"27\" fill=\"#aaaaaa\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"28\" fill=\"#9f9f9f\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"29\" fill=\"#949494\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"30\" fill=\"#898989\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"31\" fill=\"#7e7e7e\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"32\" fill=\"#737373\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"33\" fill=\"#686868\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"34\" fill=\"#5e5e5e\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"35\" fill=\"#535353\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"36\" fill=\"#484848\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"37\" fill=\"#3d3d3d\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"38\" fill=\"#323232\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"39\" fill=\"#272727\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"40\" fill=\"#1c1c1c\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"41\" fill=\"#111111\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"42\" fill=\"#101010\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"43\" fill=\"#0f0f0f\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"44\" fill=\"#0d0d0d\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"45\" fill=\"#0c0c0c\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"46\" fill=\"#0b0b0b\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"47\" fill=\"#0a0a0a\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"48\" fill=\"#090909\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"49\" fill=\"#070707\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"50\" fill=\"#060606\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"51\" fill=\"#050505\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"52\" fill=\"#040404\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"53\" fill=\"#020202\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"54\" fill=\"#010101\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"55\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"56\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"57\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"58\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"59\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"60\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"61\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"62\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"63\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"64\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"65\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"66\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"67\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"68\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><rect x=\"69\" fill=\"#000000\" width=\"1\" height=\"15\" transform=\"translate(5,0)\"></rect><g class=\"axis\" transform=\"translate(5,15)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(14,0)\"><line y2=\"0\" x2=\"0\"></line><text y=\"3\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">8,712</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(56,0)\"><line y2=\"0\" x2=\"0\"></line><text y=\"3\" x=\"0\" dy=\".71em\" style=\"text-anchor: middle; \">34,820</text></g><path class=\"domain\" d=\"M0,0V0H70V0\"></path></g></svg><svg y=\"284\" x=\"509\"><g class=\"heatmapCell\"><rect x=\"1\" y=\"30\" fill=\"#ffffff\" width=\"79\" height=\"0\"></rect><text x=\"75\" y=\"9\" dy=\"11px\" style=\"font-size: 11px; \" text-anchor=\"end\">Sales</text><polyline points=\"1,1 79,1 79,30 1,30 1,1\"></polyline></g></svg><svg y=\"40\" x=\"456\" id=\"vertLegend\" style=\"opacity: 0.01; \"><rect y=\"-1\" fill=\"#ffffff\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"0\" fill=\"#ffffff\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"1\" fill=\"#fefefe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"2\" fill=\"#fefefe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"3\" fill=\"#fefefe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"4\" fill=\"#fdfdfd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"5\" fill=\"#fdfdfd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"6\" fill=\"#fdfdfd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"7\" fill=\"#fdfdfd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"8\" fill=\"#fcfcfc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"9\" fill=\"#fcfcfc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"10\" fill=\"#fcfcfc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"11\" fill=\"#fbfbfb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"12\" fill=\"#fbfbfb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"13\" fill=\"#fbfbfb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"14\" fill=\"#fafafa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"15\" fill=\"#fafafa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"16\" fill=\"#fafafa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"17\" fill=\"#f9f9f9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"18\" fill=\"#f9f9f9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"19\" fill=\"#f9f9f9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"20\" fill=\"#f9f9f9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"21\" fill=\"#f8f8f8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"22\" fill=\"#f8f8f8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"23\" fill=\"#f8f8f8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"24\" fill=\"#f7f7f7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"25\" fill=\"#f7f7f7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"26\" fill=\"#f7f7f7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"27\" fill=\"#f6f6f6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"28\" fill=\"#f6f6f6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"29\" fill=\"#f6f6f6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"30\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"31\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"32\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"33\" fill=\"#f5f5f5\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"34\" fill=\"#f4f4f4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"35\" fill=\"#f4f4f4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"36\" fill=\"#f4f4f4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"37\" fill=\"#f3f3f3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"38\" fill=\"#f3f3f3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"39\" fill=\"#f3f3f3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"40\" fill=\"#f2f2f2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"41\" fill=\"#f2f2f2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"42\" fill=\"#f2f2f2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"43\" fill=\"#f1f1f1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"44\" fill=\"#f1f1f1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"45\" fill=\"#f1f1f1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"46\" fill=\"#f1f1f1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"47\" fill=\"#f0f0f0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"48\" fill=\"#f0f0f0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"49\" fill=\"#f0f0f0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"50\" fill=\"#efefef\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"51\" fill=\"#efefef\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"52\" fill=\"#efefef\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"53\" fill=\"#eeeeee\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"54\" fill=\"#eeeeee\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"55\" fill=\"#ededed\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"56\" fill=\"#ececec\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"57\" fill=\"#ebebeb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"58\" fill=\"#e9e9e9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"59\" fill=\"#e8e8e8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"60\" fill=\"#e7e7e7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"61\" fill=\"#e6e6e6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"62\" fill=\"#e4e4e4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"63\" fill=\"#e3e3e3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"64\" fill=\"#e2e2e2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"65\" fill=\"#e1e1e1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"66\" fill=\"#dfdfdf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"67\" fill=\"#dedede\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"68\" fill=\"#dddddd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"69\" fill=\"#dcdcdc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"70\" fill=\"#dbdbdb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"71\" fill=\"#d9d9d9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"72\" fill=\"#d8d8d8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"73\" fill=\"#d7d7d7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"74\" fill=\"#d6d6d6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"75\" fill=\"#d4d4d4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"76\" fill=\"#d3d3d3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"77\" fill=\"#d2d2d2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"78\" fill=\"#d1d1d1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"79\" fill=\"#cfcfcf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"80\" fill=\"#cecece\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"81\" fill=\"#cdcdcd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"82\" fill=\"#cccccc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"83\" fill=\"#cbcbcb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"84\" fill=\"#c9c9c9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"85\" fill=\"#c8c8c8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"86\" fill=\"#c7c7c7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"87\" fill=\"#c6c6c6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"88\" fill=\"#c4c4c4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"89\" fill=\"#c3c3c3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"90\" fill=\"#c2c2c2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"91\" fill=\"#c1c1c1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"92\" fill=\"#bfbfbf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"93\" fill=\"#bebebe\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"94\" fill=\"#bdbdbd\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"95\" fill=\"#bcbcbc\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"96\" fill=\"#bbbbbb\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"97\" fill=\"#b9b9b9\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"98\" fill=\"#b8b8b8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"99\" fill=\"#b7b7b7\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"100\" fill=\"#b6b6b6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"101\" fill=\"#b4b4b4\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"102\" fill=\"#b3b3b3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"103\" fill=\"#b2b2b2\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"104\" fill=\"#b1b1b1\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"105\" fill=\"#afafaf\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"106\" fill=\"#aeaeae\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"107\" fill=\"#adadad\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"108\" fill=\"#acacac\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"109\" fill=\"#aaaaaa\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"110\" fill=\"#a8a8a8\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"111\" fill=\"#a6a6a6\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"112\" fill=\"#a3a3a3\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"113\" fill=\"#a0a0a0\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"114\" fill=\"#9d9d9d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"115\" fill=\"#9a9a9a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"116\" fill=\"#989898\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"117\" fill=\"#959595\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"118\" fill=\"#929292\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"119\" fill=\"#8f8f8f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"120\" fill=\"#8d8d8d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"121\" fill=\"#8a8a8a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"122\" fill=\"#878787\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"123\" fill=\"#848484\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"124\" fill=\"#828282\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"125\" fill=\"#7f7f7f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"126\" fill=\"#7c7c7c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"127\" fill=\"#797979\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"128\" fill=\"#767676\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"129\" fill=\"#747474\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"130\" fill=\"#717171\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"131\" fill=\"#6e6e6e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"132\" fill=\"#6b6b6b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"133\" fill=\"#696969\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"134\" fill=\"#666666\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"135\" fill=\"#636363\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"136\" fill=\"#606060\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"137\" fill=\"#5e5e5e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"138\" fill=\"#5b5b5b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"139\" fill=\"#585858\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"140\" fill=\"#555555\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"141\" fill=\"#525252\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"142\" fill=\"#505050\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"143\" fill=\"#4d4d4d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"144\" fill=\"#4a4a4a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"145\" fill=\"#474747\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"146\" fill=\"#454545\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"147\" fill=\"#424242\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"148\" fill=\"#3f3f3f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"149\" fill=\"#3c3c3c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"150\" fill=\"#393939\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"151\" fill=\"#373737\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"152\" fill=\"#343434\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"153\" fill=\"#313131\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"154\" fill=\"#2e2e2e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"155\" fill=\"#2c2c2c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"156\" fill=\"#292929\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"157\" fill=\"#262626\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"158\" fill=\"#232323\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"159\" fill=\"#212121\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"160\" fill=\"#1e1e1e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"161\" fill=\"#1b1b1b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"162\" fill=\"#181818\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"163\" fill=\"#151515\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"164\" fill=\"#131313\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"165\" fill=\"#111111\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"166\" fill=\"#111111\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"167\" fill=\"#101010\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"168\" fill=\"#101010\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"169\" fill=\"#101010\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"170\" fill=\"#0f0f0f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"171\" fill=\"#0f0f0f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"172\" fill=\"#0f0f0f\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"173\" fill=\"#0e0e0e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"174\" fill=\"#0e0e0e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"175\" fill=\"#0e0e0e\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"176\" fill=\"#0d0d0d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"177\" fill=\"#0d0d0d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"178\" fill=\"#0d0d0d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"179\" fill=\"#0d0d0d\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"180\" fill=\"#0c0c0c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"181\" fill=\"#0c0c0c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"182\" fill=\"#0c0c0c\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"183\" fill=\"#0b0b0b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"184\" fill=\"#0b0b0b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"185\" fill=\"#0b0b0b\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"186\" fill=\"#0a0a0a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"187\" fill=\"#0a0a0a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"188\" fill=\"#0a0a0a\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"189\" fill=\"#090909\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"190\" fill=\"#090909\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"191\" fill=\"#090909\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"192\" fill=\"#090909\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"193\" fill=\"#080808\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"194\" fill=\"#080808\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"195\" fill=\"#080808\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"196\" fill=\"#070707\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"197\" fill=\"#070707\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"198\" fill=\"#070707\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"199\" fill=\"#060606\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"200\" fill=\"#060606\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"201\" fill=\"#060606\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"202\" fill=\"#050505\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"203\" fill=\"#050505\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"204\" fill=\"#050505\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"205\" fill=\"#050505\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"206\" fill=\"#040404\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"207\" fill=\"#040404\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"208\" fill=\"#040404\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"209\" fill=\"#030303\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"210\" fill=\"#030303\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"211\" fill=\"#030303\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"212\" fill=\"#020202\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"213\" fill=\"#020202\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"214\" fill=\"#020202\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"215\" fill=\"#010101\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"216\" fill=\"#010101\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"217\" fill=\"#010101\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"218\" fill=\"#010101\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"219\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"220\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"221\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"222\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"223\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"224\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"225\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"226\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"227\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"228\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"229\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"230\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"231\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"232\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"233\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"234\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"235\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"236\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"237\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"238\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"239\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"240\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"241\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"242\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"243\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"244\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"245\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"246\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"247\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"248\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"249\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"250\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"251\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"252\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"253\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"254\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"255\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"256\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"257\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"258\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"259\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"260\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"261\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"262\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"263\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"264\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"265\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"266\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"267\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"268\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"269\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"270\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"271\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"272\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"273\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"274\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><rect y=\"275\" fill=\"#000000\" width=\"15\" height=\"1\" transform=\"translate(5,0)\"></rect><g class=\"axis\" transform=\"translate(22.5,0)\"><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,66.07142857142857)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">10,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,127.2039897039897)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">20,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,188.33655083655086)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">30,000</text></g><g class=\"tick major\" style=\"opacity: 1; \" transform=\"translate(0,249.469111969112)\"><line x2=\"0\" y2=\"0\"></line><text x=\"3\" y=\"0\" dy=\".32em\" style=\"text-anchor: start; \">40,000</text></g><path class=\"domain\" d=\"M0,5H0V271H0\"></path></g></svg></g></svg></div>\r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x33afa10>" | |
] | |
} | |
], | |
"prompt_number": 10 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"I often work with output from statistical packages and including more information in a cell also comes at little to no cost." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"d3 = d3object(width=800,\n", | |
" height=400,\n", | |
" style='JFTable',\n", | |
" number=1,\n", | |
" d3=None,\n", | |
" title='Example table with d3js',\n", | |
" desc='An example table created created with d3js with data generated with Python.')\n", | |
"sRows=[['Long/Short Eq. Hedge',\n", | |
" 'FoF',\n", | |
" 'Not L/S nor FoF',\n", | |
" 'All',\n", | |
" 'Not FoFs',\n", | |
"]]\n", | |
"\n", | |
"sColumns=[\n", | |
" ['N',\n", | |
" 'Initial',\n", | |
" 'Average',\n", | |
" 'Incentive',\n", | |
" 'Management',\n", | |
" 'Median',\n", | |
" 'Mean [%]',\n", | |
" 'Std. dev.',\n", | |
" 'Skewness',\n", | |
" 'Kurtosis'\n", | |
" ],\n", | |
" [ '',\n", | |
" None,\n", | |
" 'AUM [M, USD]',\n", | |
" None,\n", | |
" 'Fees [%]',\n", | |
" None,\n", | |
" None,\n", | |
" None,\n", | |
" None,\n", | |
" 'Returns'\n", | |
" ]\n", | |
" ]\n", | |
"data=[[3452, 3, 22, 20.0, 1.5, 0.666, 0.656, 3.538, -0.1, 1.0],\n", | |
" [5791, 7, 22, 10.0, 1.5, 0.502, 0.27, 1.17, -0.9, 1.8],\n", | |
" [6718, 4, 23, 20.0, 1.5, 0.7, 0.637, 1.448, -0.2, 1.2],\n", | |
" [15961,5,23, 20.0, 1.5, 0.6, 0.467, 1.467, -0.4, 1.3],\n", | |
" [10170,4, 23, 20.0, 1.5, 0.69, 0.646, 2.633, -0.1, 1.1],\n", | |
" ]\n", | |
"dataAdd=[['', '', '', '', '', '', 0.015, '', '', 0.084],\n", | |
" ['', '', '', '', '', '', 0.016, '', '', 0.015],\n", | |
" ['', '', '', '', '', '', 0.024, '', '', 0.162],\n", | |
" ['', '', '', '', '', '', 0.058, '', '', 0.126],\n", | |
" ['', '', '', '', '', '', 0.093, '', '', 0.149],\n", | |
" ]\n", | |
"dataAdd=[dataAdd,[[i for i in j] for j in dataAdd]]\n", | |
"d3.precision=2\n", | |
"data=d3.convertVar(data)\n", | |
"d3.precision=4\n", | |
"d3.addSimpleTable( data, \n", | |
" dataAdd=dataAdd,\n", | |
" fontSizeCells=[12,10,10],\n", | |
" pVals=0,\n", | |
" sRows=sRows,\n", | |
" sColumns=sColumns,\n", | |
" sRowsMargins=[5,100,0],\n", | |
" sColsMargins=[5,20,10],\n", | |
" spacing=2,\n", | |
" addBorders=0,\n", | |
" addOutsideBorders=-1,\n", | |
" rectWidth=45,\n", | |
" rectHeight=0 \n", | |
" )\n", | |
"html=d3.render(mode=('show','html'))\n", | |
"display(html)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<style>\n", | |
"\n", | |
"\n", | |
" body{\n", | |
" font-family: \"Lucinda Grande\", \"Lucinda Sans Unicode\", Helvetica, Arial, Verdana, sans-serif;\n", | |
" }\n", | |
" .d3Output{\n", | |
" min-height: 1.2em;\n", | |
" line-height: 1.2em;\n", | |
" position: relative;\n", | |
" font-size: 1em;\n", | |
" padding: 5px 0;\n", | |
"\n", | |
" list-style: none;\n", | |
" background: #fff;\n", | |
" color: #000;\n", | |
" }\n", | |
" svg{\n", | |
" color-rendering: optimizeQuality !important;\n", | |
" shape-rendering: geometricPrecision !important;\n", | |
" text-rendering: geometricPrecision !important;\n", | |
" }\n", | |
" .d3Output.header{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 0.9em;\n", | |
"\n", | |
" }\n", | |
" .d3Output.title{\n", | |
" text-align: center;\n", | |
" font-weight: bold;\n", | |
" border-bottom: none;\n", | |
" font-size: 1.2em;\n", | |
"\n", | |
" }\n", | |
" .d3Output .description, .d3Output.description{\n", | |
" font-size: 0.8em;\n", | |
" text-align:justify;\n", | |
" text-justify:inter-word;\n", | |
" border-bottom: 1px solid #000;\n", | |
" }\n", | |
" .d3Output .panel{\n", | |
" text-align: center !important;\n", | |
" }\n", | |
" svg, canvas {\n", | |
" border-bottom: 1px solid #000;\n", | |
" display: block;\n", | |
" margin: 5px 0;\n", | |
" }\n", | |
" .d3Output.description.figure{\n", | |
" border-bottom: none;\n", | |
" }\n", | |
" \n", | |
"\n", | |
" .heatmapCell path, .heatmapCell line, .heatmapCell polyline, .d3Output polyline {\n", | |
" fill: none;\n", | |
" stroke-width: 1px;\n", | |
" stroke: black;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" .heatmapCell text, .heatmapCell rect, .d3Output rect {\n", | |
" font-size: 1em;\n", | |
" shape-rendering: crispEdges !important;\n", | |
" }\n", | |
" \n", | |
"#-tag-11df6dc0-09b6-11e3-be1a-b7e39e58f78a{shape-rendering: crispEdges !important;}\n", | |
"</style>\r\n", | |
"<div class=\"d3Output header\" style=\"width: 800px;\">Table 1</div>\r\n", | |
"<div class=\"d3Output title\" style=\"width: 800px;\"> Example Table With D3js</div>\r\n", | |
"<div class=\"d3Output description\" style=\"width: 800px\"> An example table created created with d3js with data generated with Python.</div>\r\n", | |
"<div id=\"id-11de835e-09b6-11e3-83cd-b7e39e58f78a\" class=\"d3Output\"><svg width=\"800\" height=\"400\" style=\"border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: black; \"><g id=\"svgElementid-11de835e-09b6-11e3-83cd-b7e39e58f78a-tag-11df6dc0-09b6-11e3-be1a-b7e39e58f78a\" transform=\"translate(118,64)\"><svg class=\"heatmap\" y=\"0\" x=\"0\" id=\"heatmap\"><g class=\"heatmapCell\" transform=\"translate(110,40)\"><rect y=\"46\" fill=\"#49c8af\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3452</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(110,88)\"><rect y=\"46\" fill=\"#499eaf\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5791</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(110,136)\"><rect y=\"46\" fill=\"#548da7\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">6718</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(110,184)\"><rect y=\"46\" fill=\"#210f06\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">15961</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(110,232)\"><rect y=\"46\" fill=\"#694f6b\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10170</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(157,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(157,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">7</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(157,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(157,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(157,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">4</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(204,40)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">22</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(204,88)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">22</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(204,136)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">23</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(204,184)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">23</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(204,232)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">23</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(251,40)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">20</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(251,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">10</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(251,136)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">20</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(251,184)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">20</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(251,232)\"><rect y=\"46\" fill=\"#b8fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">20</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(298,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(298,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(298,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(298,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(298,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(345,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.67</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(345,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.5</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(345,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.7</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(345,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.6</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(345,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.69</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(392,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.66</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.015</text></g><g class=\"heatmapCell\" transform=\"translate(392,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.27</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.016</text></g><g class=\"heatmapCell\" transform=\"translate(392,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.64</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.024</text></g><g class=\"heatmapCell\" transform=\"translate(392,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.47</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.058</text></g><g class=\"heatmapCell\" transform=\"translate(392,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">0.65</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.093</text></g><g class=\"heatmapCell\" transform=\"translate(439,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">3.54</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(439,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.17</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(439,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.45</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(439,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.47</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(439,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">2.63</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(486,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">-0.1</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(486,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">-0.9</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(486,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">-0.2</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(486,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">-0.4</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(486,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">-0.1</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text></g><g class=\"heatmapCell\" transform=\"translate(533,40)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.084</text></g><g class=\"heatmapCell\" transform=\"translate(533,88)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.8</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">★★</text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.015</text></g><g class=\"heatmapCell\" transform=\"translate(533,136)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.2</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.162</text></g><g class=\"heatmapCell\" transform=\"translate(533,184)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.3</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.126</text></g><g class=\"heatmapCell\" transform=\"translate(533,232)\"><rect y=\"46\" fill=\"#b9fb8a\" id=\"heatCell\" width=\"45\" height=\"0\"></rect><text x=\"40\" y=\"3\" id=\"heatText\" dy=\"12px\" style=\"font-size: 12px; \" text-anchor=\"end\">1.1</text><text x=\"40\" y=\"17\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\"></text><text x=\"40\" y=\"29\" dy=\"10px\" id=\"heatTextAdd\" style=\"font-size: 10px; \" text-anchor=\"end\">0.149</text></g><g class=\"heatmapCell\" transform=\"translate(110,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">N</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(157,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Initial</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(204,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Average</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(251,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Incentive</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(298,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Management</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(345,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Median</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(392,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Mean [%]</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(439,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Std. dev.</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(486,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Skewness</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(533,0)\"><text x=\"22.5\" y=\"30\" style=\"font-size: 9px; \" text-anchor=\"middle\">Kurtosis</text><polyline points=\"1.5,35 43.5,35\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(157,0)\"><text x=\"46\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">AUM [M, USD]</text><polyline points=\"1.5,15 90.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(251,0)\"><text x=\"46\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Fees [%]</text><polyline points=\"1.5,15 90.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(345,0)\"><text x=\"116.5\" y=\"10\" style=\"font-size: 9px; \" text-anchor=\"middle\">Returns</text><polyline points=\"1.5,15 231.5,15\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,40)\"><text x=\"100\" y=\"27.5\" style=\"font-size: 9px; \" text-anchor=\"end\">Long/Short Eq. Hedge</text><polyline points=\"105,1.5 105,44.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,88)\"><text x=\"100\" y=\"27.5\" style=\"font-size: 9px; \" text-anchor=\"end\">FoF</text><polyline points=\"105,1.5 105,44.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,136)\"><text x=\"100\" y=\"27.5\" style=\"font-size: 9px; \" text-anchor=\"end\">Not L/S nor FoF</text><polyline points=\"105,1.5 105,44.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,184)\"><text x=\"100\" y=\"27.5\" style=\"font-size: 9px; \" text-anchor=\"end\">All</text><polyline points=\"105,1.5 105,44.5\"></polyline></g><g class=\"heatmapCell\" transform=\"translate(0,232)\"><text x=\"100\" y=\"27.5\" style=\"font-size: 9px; \" text-anchor=\"end\">Not FoFs</text><polyline points=\"105,1.5 105,44.5\"></polyline></g></svg></g></svg></div>\r\n", | |
"\r\n" | |
], | |
"metadata": {}, | |
"output_type": "display_data", | |
"text": [ | |
"<IPython.core.display.HTML at 0x33afa10>" | |
] | |
} | |
], | |
"prompt_number": 12 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
GNU GENERAL PUBLIC LICENSE | |
Version 3, 29 June 2007 | |
Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/} | |
Everyone is permitted to copy and distribute verbatim copies | |
of this license document, but changing it is not allowed. | |
Preamble | |
The GNU General Public License is a free, copyleft license for | |
software and other kinds of works. | |
The licenses for most software and other practical works are designed | |
to take away your freedom to share and change the works. By contrast, | |
the GNU General Public License is intended to guarantee your freedom to | |
share and change all versions of a program--to make sure it remains free | |
software for all its users. We, the Free Software Foundation, use the | |
GNU General Public License for most of our software; it applies also to | |
any other work released this way by its authors. You can apply it to | |
your programs, too. | |
When we speak of free software, we are referring to freedom, not | |
price. Our General Public Licenses are designed to make sure that you | |
have the freedom to distribute copies of free software (and charge for | |
them if you wish), that you receive source code or can get it if you | |
want it, that you can change the software or use pieces of it in new | |
free programs, and that you know you can do these things. | |
To protect your rights, we need to prevent others from denying you | |
these rights or asking you to surrender the rights. Therefore, you have | |
certain responsibilities if you distribute copies of the software, or if | |
you modify it: responsibilities to respect the freedom of others. | |
For example, if you distribute copies of such a program, whether | |
gratis or for a fee, you must pass on to the recipients the same | |
freedoms that you received. You must make sure that they, too, receive | |
or can get the source code. And you must show them these terms so they | |
know their rights. | |
Developers that use the GNU GPL protect your rights with two steps: | |
(1) assert copyright on the software, and (2) offer you this License | |
giving you legal permission to copy, distribute and/or modify it. | |
For the developers' and authors' protection, the GPL clearly explains | |
that there is no warranty for this free software. For both users' and | |
authors' sake, the GPL requires that modified versions be marked as | |
changed, so that their problems will not be attributed erroneously to | |
authors of previous versions. | |
Some devices are designed to deny users access to install or run | |
modified versions of the software inside them, although the manufacturer | |
can do so. This is fundamentally incompatible with the aim of | |
protecting users' freedom to change the software. The systematic | |
pattern of such abuse occurs in the area of products for individuals to | |
use, which is precisely where it is most unacceptable. Therefore, we | |
have designed this version of the GPL to prohibit the practice for those | |
products. If such problems arise substantially in other domains, we | |
stand ready to extend this provision to those domains in future versions | |
of the GPL, as needed to protect the freedom of users. | |
Finally, every program is threatened constantly by software patents. | |
States should not allow patents to restrict development and use of | |
software on general-purpose computers, but in those that do, we wish to | |
avoid the special danger that patents applied to a free program could | |
make it effectively proprietary. To prevent this, the GPL assures that | |
patents cannot be used to render the program non-free. | |
The precise terms and conditions for copying, distribution and | |
modification follow. | |
TERMS AND CONDITIONS | |
0. Definitions. | |
"This License" refers to version 3 of the GNU General Public License. | |
"Copyright" also means copyright-like laws that apply to other kinds of | |
works, such as semiconductor masks. | |
"The Program" refers to any copyrightable work licensed under this | |
License. Each licensee is addressed as "you". "Licensees" and | |
"recipients" may be individuals or organizations. | |
To "modify" a work means to copy from or adapt all or part of the work | |
in a fashion requiring copyright permission, other than the making of an | |
exact copy. The resulting work is called a "modified version" of the | |
earlier work or a work "based on" the earlier work. | |
A "covered work" means either the unmodified Program or a work based | |
on the Program. | |
To "propagate" a work means to do anything with it that, without | |
permission, would make you directly or secondarily liable for | |
infringement under applicable copyright law, except executing it on a | |
computer or modifying a private copy. Propagation includes copying, | |
distribution (with or without modification), making available to the | |
public, and in some countries other activities as well. | |
To "convey" a work means any kind of propagation that enables other | |
parties to make or receive copies. Mere interaction with a user through | |
a computer network, with no transfer of a copy, is not conveying. | |
An interactive user interface displays "Appropriate Legal Notices" | |
to the extent that it includes a convenient and prominently visible | |
feature that (1) displays an appropriate copyright notice, and (2) | |
tells the user that there is no warranty for the work (except to the | |
extent that warranties are provided), that licensees may convey the | |
work under this License, and how to view a copy of this License. If | |
the interface presents a list of user commands or options, such as a | |
menu, a prominent item in the list meets this criterion. | |
1. Source Code. | |
The "source code" for a work means the preferred form of the work | |
for making modifications to it. "Object code" means any non-source | |
form of a work. | |
A "Standard Interface" means an interface that either is an official | |
standard defined by a recognized standards body, or, in the case of | |
interfaces specified for a particular programming language, one that | |
is widely used among developers working in that language. | |
The "System Libraries" of an executable work include anything, other | |
than the work as a whole, that (a) is included in the normal form of | |
packaging a Major Component, but which is not part of that Major | |
Component, and (b) serves only to enable use of the work with that | |
Major Component, or to implement a Standard Interface for which an | |
implementation is available to the public in source code form. A | |
"Major Component", in this context, means a major essential component | |
(kernel, window system, and so on) of the specific operating system | |
(if any) on which the executable work runs, or a compiler used to | |
produce the work, or an object code interpreter used to run it. | |
The "Corresponding Source" for a work in object code form means all | |
the source code needed to generate, install, and (for an executable | |
work) run the object code and to modify the work, including scripts to | |
control those activities. However, it does not include the work's | |
System Libraries, or general-purpose tools or generally available free | |
programs which are used unmodified in performing those activities but | |
which are not part of the work. For example, Corresponding Source | |
includes interface definition files associated with source files for | |
the work, and the source code for shared libraries and dynamically | |
linked subprograms that the work is specifically designed to require, | |
such as by intimate data communication or control flow between those | |
subprograms and other parts of the work. | |
The Corresponding Source need not include anything that users | |
can regenerate automatically from other parts of the Corresponding | |
Source. | |
The Corresponding Source for a work in source code form is that | |
same work. | |
2. Basic Permissions. | |
All rights granted under this License are granted for the term of | |
copyright on the Program, and are irrevocable provided the stated | |
conditions are met. This License explicitly affirms your unlimited | |
permission to run the unmodified Program. The output from running a | |
covered work is covered by this License only if the output, given its | |
content, constitutes a covered work. This License acknowledges your | |
rights of fair use or other equivalent, as provided by copyright law. | |
You may make, run and propagate covered works that you do not | |
convey, without conditions so long as your license otherwise remains | |
in force. You may convey covered works to others for the sole purpose | |
of having them make modifications exclusively for you, or provide you | |
with facilities for running those works, provided that you comply with | |
the terms of this License in conveying all material for which you do | |
not control copyright. Those thus making or running the covered works | |
for you must do so exclusively on your behalf, under your direction | |
and control, on terms that prohibit them from making any copies of | |
your copyrighted material outside their relationship with you. | |
Conveying under any other circumstances is permitted solely under | |
the conditions stated below. Sublicensing is not allowed; section 10 | |
makes it unnecessary. | |
3. Protecting Users' Legal Rights From Anti-Circumvention Law. | |
No covered work shall be deemed part of an effective technological | |
measure under any applicable law fulfilling obligations under article | |
11 of the WIPO copyright treaty adopted on 20 December 1996, or | |
similar laws prohibiting or restricting circumvention of such | |
measures. | |
When you convey a covered work, you waive any legal power to forbid | |
circumvention of technological measures to the extent such circumvention | |
is effected by exercising rights under this License with respect to | |
the covered work, and you disclaim any intention to limit operation or | |
modification of the work as a means of enforcing, against the work's | |
users, your or third parties' legal rights to forbid circumvention of | |
technological measures. | |
4. Conveying Verbatim Copies. | |
You may convey verbatim copies of the Program's source code as you | |
receive it, in any medium, provided that you conspicuously and | |
appropriately publish on each copy an appropriate copyright notice; | |
keep intact all notices stating that this License and any | |
non-permissive terms added in accord with section 7 apply to the code; | |
keep intact all notices of the absence of any warranty; and give all | |
recipients a copy of this License along with the Program. | |
You may charge any price or no price for each copy that you convey, | |
and you may offer support or warranty protection for a fee. | |
5. Conveying Modified Source Versions. | |
You may convey a work based on the Program, or the modifications to | |
produce it from the Program, in the form of source code under the | |
terms of section 4, provided that you also meet all of these conditions: | |
a) The work must carry prominent notices stating that you modified | |
it, and giving a relevant date. | |
b) The work must carry prominent notices stating that it is | |
released under this License and any conditions added under section | |
7. This requirement modifies the requirement in section 4 to | |
"keep intact all notices". | |
c) You must license the entire work, as a whole, under this | |
License to anyone who comes into possession of a copy. This | |
License will therefore apply, along with any applicable section 7 | |
additional terms, to the whole of the work, and all its parts, | |
regardless of how they are packaged. This License gives no | |
permission to license the work in any other way, but it does not | |
invalidate such permission if you have separately received it. | |
d) If the work has interactive user interfaces, each must display | |
Appropriate Legal Notices; however, if the Program has interactive | |
interfaces that do not display Appropriate Legal Notices, your | |
work need not make them do so. | |
A compilation of a covered work with other separate and independent | |
works, which are not by their nature extensions of the covered work, | |
and which are not combined with it such as to form a larger program, | |
in or on a volume of a storage or distribution medium, is called an | |
"aggregate" if the compilation and its resulting copyright are not | |
used to limit the access or legal rights of the compilation's users | |
beyond what the individual works permit. Inclusion of a covered work | |
in an aggregate does not cause this License to apply to the other | |
parts of the aggregate. | |
6. Conveying Non-Source Forms. | |
You may convey a covered work in object code form under the terms | |
of sections 4 and 5, provided that you also convey the | |
machine-readable Corresponding Source under the terms of this License, | |
in one of these ways: | |
a) Convey the object code in, or embodied in, a physical product | |
(including a physical distribution medium), accompanied by the | |
Corresponding Source fixed on a durable physical medium | |
customarily used for software interchange. | |
b) Convey the object code in, or embodied in, a physical product | |
(including a physical distribution medium), accompanied by a | |
written offer, valid for at least three years and valid for as | |
long as you offer spare parts or customer support for that product | |
model, to give anyone who possesses the object code either (1) a | |
copy of the Corresponding Source for all the software in the | |
product that is covered by this License, on a durable physical | |
medium customarily used for software interchange, for a price no | |
more than your reasonable cost of physically performing this | |
conveying of source, or (2) access to copy the | |
Corresponding Source from a network server at no charge. | |
c) Convey individual copies of the object code with a copy of the | |
written offer to provide the Corresponding Source. This | |
alternative is allowed only occasionally and noncommercially, and | |
only if you received the object code with such an offer, in accord | |
with subsection 6b. | |
d) Convey the object code by offering access from a designated | |
place (gratis or for a charge), and offer equivalent access to the | |
Corresponding Source in the same way through the same place at no | |
further charge. You need not require recipients to copy the | |
Corresponding Source along with the object code. If the place to | |
copy the object code is a network server, the Corresponding Source | |
may be on a different server (operated by you or a third party) | |
that supports equivalent copying facilities, provided you maintain | |
clear directions next to the object code saying where to find the | |
Corresponding Source. Regardless of what server hosts the | |
Corresponding Source, you remain obligated to ensure that it is | |
available for as long as needed to satisfy these requirements. | |
e) Convey the object code using peer-to-peer transmission, provided | |
you inform other peers where the object code and Corresponding | |
Source of the work are being offered to the general public at no | |
charge under subsection 6d. | |
A separable portion of the object code, whose source code is excluded | |
from the Corresponding Source as a System Library, need not be | |
included in conveying the object code work. | |
A "User Product" is either (1) a "consumer product", which means any | |
tangible personal property which is normally used for personal, family, | |
or household purposes, or (2) anything designed or sold for incorporation | |
into a dwelling. In determining whether a product is a consumer product, | |
doubtful cases shall be resolved in favor of coverage. For a particular | |
product received by a particular user, "normally used" refers to a | |
typical or common use of that class of product, regardless of the status | |
of the particular user or of the way in which the particular user | |
actually uses, or expects or is expected to use, the product. A product | |
is a consumer product regardless of whether the product has substantial | |
commercial, industrial or non-consumer uses, unless such uses represent | |
the only significant mode of use of the product. | |
"Installation Information" for a User Product means any methods, | |
procedures, authorization keys, or other information required to install | |
and execute modified versions of a covered work in that User Product from | |
a modified version of its Corresponding Source. The information must | |
suffice to ensure that the continued functioning of the modified object | |
code is in no case prevented or interfered with solely because | |
modification has been made. | |
If you convey an object code work under this section in, or with, or | |
specifically for use in, a User Product, and the conveying occurs as | |
part of a transaction in which the right of possession and use of the | |
User Product is transferred to the recipient in perpetuity or for a | |
fixed term (regardless of how the transaction is characterized), the | |
Corresponding Source conveyed under this section must be accompanied | |
by the Installation Information. But this requirement does not apply | |
if neither you nor any third party retains the ability to install | |
modified object code on the User Product (for example, the work has | |
been installed in ROM). | |
The requirement to provide Installation Information does not include a | |
requirement to continue to provide support service, warranty, or updates | |
for a work that has been modified or installed by the recipient, or for | |
the User Product in which it has been modified or installed. Access to a | |
network may be denied when the modification itself materially and | |
adversely affects the operation of the network or violates the rules and | |
protocols for communication across the network. | |
Corresponding Source conveyed, and Installation Information provided, | |
in accord with this section must be in a format that is publicly | |
documented (and with an implementation available to the public in | |
source code form), and must require no special password or key for | |
unpacking, reading or copying. | |
7. Additional Terms. | |
"Additional permissions" are terms that supplement the terms of this | |
License by making exceptions from one or more of its conditions. | |
Additional permissions that are applicable to the entire Program shall | |
be treated as though they were included in this License, to the extent | |
that they are valid under applicable law. If additional permissions | |
apply only to part of the Program, that part may be used separately | |
under those permissions, but the entire Program remains governed by | |
this License without regard to the additional permissions. | |
When you convey a copy of a covered work, you may at your option | |
remove any additional permissions from that copy, or from any part of | |
it. (Additional permissions may be written to require their own | |
removal in certain cases when you modify the work.) You may place | |
additional permissions on material, added by you to a covered work, | |
for which you have or can give appropriate copyright permission. | |
Notwithstanding any other provision of this License, for material you | |
add to a covered work, you may (if authorized by the copyright holders of | |
that material) supplement the terms of this License with terms: | |
a) Disclaiming warranty or limiting liability differently from the | |
terms of sections 15 and 16 of this License; or | |
b) Requiring preservation of specified reasonable legal notices or | |
author attributions in that material or in the Appropriate Legal | |
Notices displayed by works containing it; or | |
c) Prohibiting misrepresentation of the origin of that material, or | |
requiring that modified versions of such material be marked in | |
reasonable ways as different from the original version; or | |
d) Limiting the use for publicity purposes of names of licensors or | |
authors of the material; or | |
e) Declining to grant rights under trademark law for use of some | |
trade names, trademarks, or service marks; or | |
f) Requiring indemnification of licensors and authors of that | |
material by anyone who conveys the material (or modified versions of | |
it) with contractual assumptions of liability to the recipient, for | |
any liability that these contractual assumptions directly impose on | |
those licensors and authors. | |
All other non-permissive additional terms are considered "further | |
restrictions" within the meaning of section 10. If the Program as you | |
received it, or any part of it, contains a notice stating that it is | |
governed by this License along with a term that is a further | |
restriction, you may remove that term. If a license document contains | |
a further restriction but permits relicensing or conveying under this | |
License, you may add to a covered work material governed by the terms | |
of that license document, provided that the further restriction does | |
not survive such relicensing or conveying. | |
If you add terms to a covered work in accord with this section, you | |
must place, in the relevant source files, a statement of the | |
additional terms that apply to those files, or a notice indicating | |
where to find the applicable terms. | |
Additional terms, permissive or non-permissive, may be stated in the | |
form of a separately written license, or stated as exceptions; | |
the above requirements apply either way. | |
8. Termination. | |
You may not propagate or modify a covered work except as expressly | |
provided under this License. Any attempt otherwise to propagate or | |
modify it is void, and will automatically terminate your rights under | |
this License (including any patent licenses granted under the third | |
paragraph of section 11). | |
However, if you cease all violation of this License, then your | |
license from a particular copyright holder is reinstated (a) | |
provisionally, unless and until the copyright holder explicitly and | |
finally terminates your license, and (b) permanently, if the copyright | |
holder fails to notify you of the violation by some reasonable means | |
prior to 60 days after the cessation. | |
Moreover, your license from a particular copyright holder is | |
reinstated permanently if the copyright holder notifies you of the | |
violation by some reasonable means, this is the first time you have | |
received notice of violation of this License (for any work) from that | |
copyright holder, and you cure the violation prior to 30 days after | |
your receipt of the notice. | |
Termination of your rights under this section does not terminate the | |
licenses of parties who have received copies or rights from you under | |
this License. If your rights have been terminated and not permanently | |
reinstated, you do not qualify to receive new licenses for the same | |
material under section 10. | |
9. Acceptance Not Required for Having Copies. | |
You are not required to accept this License in order to receive or | |
run a copy of the Program. Ancillary propagation of a covered work | |
occurring solely as a consequence of using peer-to-peer transmission | |
to receive a copy likewise does not require acceptance. However, | |
nothing other than this License grants you permission to propagate or | |
modify any covered work. These actions infringe copyright if you do | |
not accept this License. Therefore, by modifying or propagating a | |
covered work, you indicate your acceptance of this License to do so. | |
10. Automatic Licensing of Downstream Recipients. | |
Each time you convey a covered work, the recipient automatically | |
receives a license from the original licensors, to run, modify and | |
propagate that work, subject to this License. You are not responsible | |
for enforcing compliance by third parties with this License. | |
An "entity transaction" is a transaction transferring control of an | |
organization, or substantially all assets of one, or subdividing an | |
organization, or merging organizations. If propagation of a covered | |
work results from an entity transaction, each party to that | |
transaction who receives a copy of the work also receives whatever | |
licenses to the work the party's predecessor in interest had or could | |
give under the previous paragraph, plus a right to possession of the | |
Corresponding Source of the work from the predecessor in interest, if | |
the predecessor has it or can get it with reasonable efforts. | |
You may not impose any further restrictions on the exercise of the | |
rights granted or affirmed under this License. For example, you may | |
not impose a license fee, royalty, or other charge for exercise of | |
rights granted under this License, and you may not initiate litigation | |
(including a cross-claim or counterclaim in a lawsuit) alleging that | |
any patent claim is infringed by making, using, selling, offering for | |
sale, or importing the Program or any portion of it. | |
11. Patents. | |
A "contributor" is a copyright holder who authorizes use under this | |
License of the Program or a work on which the Program is based. The | |
work thus licensed is called the contributor's "contributor version". | |
A contributor's "essential patent claims" are all patent claims | |
owned or controlled by the contributor, whether already acquired or | |
hereafter acquired, that would be infringed by some manner, permitted | |
by this License, of making, using, or selling its contributor version, | |
but do not include claims that would be infringed only as a | |
consequence of further modification of the contributor version. For | |
purposes of this definition, "control" includes the right to grant | |
patent sublicenses in a manner consistent with the requirements of | |
this License. | |
Each contributor grants you a non-exclusive, worldwide, royalty-free | |
patent license under the contributor's essential patent claims, to | |
make, use, sell, offer for sale, import and otherwise run, modify and | |
propagate the contents of its contributor version. | |
In the following three paragraphs, a "patent license" is any express | |
agreement or commitment, however denominated, not to enforce a patent | |
(such as an express permission to practice a patent or covenant not to | |
sue for patent infringement). To "grant" such a patent license to a | |
party means to make such an agreement or commitment not to enforce a | |
patent against the party. | |
If you convey a covered work, knowingly relying on a patent license, | |
and the Corresponding Source of the work is not available for anyone | |
to copy, free of charge and under the terms of this License, through a | |
publicly available network server or other readily accessible means, | |
then you must either (1) cause the Corresponding Source to be so | |
available, or (2) arrange to deprive yourself of the benefit of the | |
patent license for this particular work, or (3) arrange, in a manner | |
consistent with the requirements of this License, to extend the patent | |
license to downstream recipients. "Knowingly relying" means you have | |
actual knowledge that, but for the patent license, your conveying the | |
covered work in a country, or your recipient's use of the covered work | |
in a country, would infringe one or more identifiable patents in that | |
country that you have reason to believe are valid. | |
If, pursuant to or in connection with a single transaction or | |
arrangement, you convey, or propagate by procuring conveyance of, a | |
covered work, and grant a patent license to some of the parties | |
receiving the covered work authorizing them to use, propagate, modify | |
or convey a specific copy of the covered work, then the patent license | |
you grant is automatically extended to all recipients of the covered | |
work and works based on it. | |
A patent license is "discriminatory" if it does not include within | |
the scope of its coverage, prohibits the exercise of, or is | |
conditioned on the non-exercise of one or more of the rights that are | |
specifically granted under this License. You may not convey a covered | |
work if you are a party to an arrangement with a third party that is | |
in the business of distributing software, under which you make payment | |
to the third party based on the extent of your activity of conveying | |
the work, and under which the third party grants, to any of the | |
parties who would receive the covered work from you, a discriminatory | |
patent license (a) in connection with copies of the covered work | |
conveyed by you (or copies made from those copies), or (b) primarily | |
for and in connection with specific products or compilations that | |
contain the covered work, unless you entered into that arrangement, | |
or that patent license was granted, prior to 28 March 2007. | |
Nothing in this License shall be construed as excluding or limiting | |
any implied license or other defenses to infringement that may | |
otherwise be available to you under applicable patent law. | |
12. No Surrender of Others' Freedom. | |
If conditions are imposed on you (whether by court order, agreement or | |
otherwise) that contradict the conditions of this License, they do not | |
excuse you from the conditions of this License. If you cannot convey a | |
covered work so as to satisfy simultaneously your obligations under this | |
License and any other pertinent obligations, then as a consequence you may | |
not convey it at all. For example, if you agree to terms that obligate you | |
to collect a royalty for further conveying from those to whom you convey | |
the Program, the only way you could satisfy both those terms and this | |
License would be to refrain entirely from conveying the Program. | |
13. Use with the GNU Affero General Public License. | |
Notwithstanding any other provision of this License, you have | |
permission to link or combine any covered work with a work licensed | |
under version 3 of the GNU Affero General Public License into a single | |
combined work, and to convey the resulting work. The terms of this | |
License will continue to apply to the part which is the covered work, | |
but the special requirements of the GNU Affero General Public License, | |
section 13, concerning interaction through a network will apply to the | |
combination as such. | |
14. Revised Versions of this License. | |
The Free Software Foundation may publish revised and/or new versions of | |
the GNU General Public License from time to time. Such new versions will | |
be similar in spirit to the present version, but may differ in detail to | |
address new problems or concerns. | |
Each version is given a distinguishing version number. If the | |
Program specifies that a certain numbered version of the GNU General | |
Public License "or any later version" applies to it, you have the | |
option of following the terms and conditions either of that numbered | |
version or of any later version published by the Free Software | |
Foundation. If the Program does not specify a version number of the | |
GNU General Public License, you may choose any version ever published | |
by the Free Software Foundation. | |
If the Program specifies that a proxy can decide which future | |
versions of the GNU General Public License can be used, that proxy's | |
public statement of acceptance of a version permanently authorizes you | |
to choose that version for the Program. | |
Later license versions may give you additional or different | |
permissions. However, no additional obligations are imposed on any | |
author or copyright holder as a result of your choosing to follow a | |
later version. | |
15. Disclaimer of Warranty. | |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | |
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | |
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | |
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | |
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | |
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | |
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | |
16. Limitation of Liability. | |
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | |
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | |
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | |
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | |
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | |
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | |
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | |
SUCH DAMAGES. | |
17. Interpretation of Sections 15 and 16. | |
If the disclaimer of warranty and limitation of liability provided | |
above cannot be given local legal effect according to their terms, | |
reviewing courts shall apply local law that most closely approximates | |
an absolute waiver of all civil liability in connection with the | |
Program, unless a warranty or assumption of liability accompanies a | |
copy of the Program in return for a fee. | |
END OF TERMS AND CONDITIONS | |
How to Apply These Terms to Your New Programs | |
If you develop a new program, and you want it to be of the greatest | |
possible use to the public, the best way to achieve this is to make it | |
free software which everyone can redistribute and change under these terms. | |
To do so, attach the following notices to the program. It is safest | |
to attach them to the start of each source file to most effectively | |
state the exclusion of warranty; and each file should have at least | |
the "copyright" line and a pointer to where the full notice is found. | |
{one line to give the program's name and a brief idea of what it does.} | |
Copyright (C) {year} {name of author} | |
This program is free software: you can redistribute it and/or modify | |
it under the terms of the GNU General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with this program. If not, see {http://www.gnu.org/licenses/}. | |
Also add information on how to contact you by electronic and paper mail. | |
If the program does terminal interaction, make it output a short | |
notice like this when it starts in an interactive mode: | |
ipyD3 Copyright (C) 2013 z-m-k | |
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |
This is free software, and you are welcome to redistribute it | |
under certain conditions; type `show c' for details. | |
The hypothetical commands `show w' and `show c' should show the appropriate | |
parts of the General Public License. Of course, your program's commands | |
might be different; for a GUI interface, you would use an "about box". | |
You should also get your employer (if you work as a programmer) or school, | |
if any, to sign a "copyright disclaimer" for the program, if necessary. | |
For more information on this, and how to apply and follow the GNU GPL, see | |
{http://www.gnu.org/licenses/}. | |
The GNU General Public License does not permit incorporating your program | |
into proprietary programs. If your program is a subroutine library, you | |
may consider it more useful to permit linking proprietary applications with | |
the library. If this is what you want to do, use the GNU Lesser General | |
Public License instead of this License. But first, please read | |
{http://www.gnu.org/philosophy/why-not-lgpl.html}. |