Kernel Density Estimate

class visigoth.map_layers.kde.KDE(data, lon=0, lat=1, kernel=None, bandwidth=1000, nr_samples_across=20, contour_interval=0.1, palette=None, label_fn=<function KDE.<lambda>>, stroke='brown', stroke_width=0, font_height=8, text_attributes={})
Create a Kernel Density Estimate (KDE) plot
data (list): A relational data set (for example, list of dicts/lists/tuples describing each row)
Keyword Arguments:
 
  • lat (str or int) – Identify the column to provide the latitude value for each point
  • lon (str or int) – Identify the column to provide the longitude value for each point
  • kernel – a kernel function mapping from distance in meters to a probability value
  • bandwidth (int) – defines the radius of the area of influence of each data point
  • nr_samples_across (int) – number of points to sample for contours across the plot
  • contour_interval (float) – height difference between contours
  • palette (ContinuousPalette) – define the colours used in the plot
  • stroke (str) – the colour to use for contour lines
  • stroke_width (float) – the width (in pixels) to use for contour lines
  • font_height (int) – font size in pixels for contour labels
  • text_attributes (dict) – a dict containing SVG name/value attributes to apply to contour labels

Example

(Link to open example in new tab):

Source Code (Link to Github):

# -*- coding: utf-8 -*-

import random

from visigoth import Diagram
from visigoth.containers import Map, Box
from visigoth.map_layers import Scatter, KDE
from visigoth.utils.colour import ContinuousPalette

d = Diagram(fill="white")

rng = random.Random()
bounds = ((0,0),(1,1))
data = [(rng.random(),rng.random()) for x in range(0,100)]

palette = ContinuousPalette()
palette.addColour("#0000FF",0).addColour("#00FF00",1).addColour("#FF0000",2)

m1 = Map(512,bounds)
m1.addLayer(KDE(data,bandwidth=4000,nr_samples_across=100,palette=palette,label_fn=None))
m1.addLayer(Scatter(data))
d.add(Box(m1))

html = d.draw(format="html")

f = open("example.html", "w")
f.write(html)
f.close()