diff --git a/src/client/components/perspectives/sampo/Perspective1.js b/src/client/components/perspectives/sampo/Perspective1.js
index 049b844b2fd23105bf816214e37ea4a92f451c92..f5ad37b674e8c20511d062bdac89b3de54b2799b 100644
--- a/src/client/components/perspectives/sampo/Perspective1.js
+++ b/src/client/components/perspectives/sampo/Perspective1.js
@@ -204,6 +204,28 @@ const Perspective1 = props => {
             layoutConfig={props.layoutConfig}
           />}
       />
+      <Route
+        path={`${rootUrl}/${perspective.id}/faceted-search/choropleth_map`}
+        render={() =>
+          <Deck
+            center={props.perspectiveState.maps.placesMsMigrations.center}
+            zoom={props.perspectiveState.maps.placesMsMigrations.zoom}
+            results={props.perspectiveState.results}
+            facetUpdateID={props.facetState.facetUpdateID}
+            instanceAnalysisData={props.perspectiveState.instanceAnalysisData}
+            instanceAnalysisDataUpdateID={props.perspectiveState.instanceAnalysisDataUpdateID}
+            resultClass='choropleth'
+            facetClass='perspective1'
+            fetchResults={props.fetchResults}
+            fetchInstanceAnalysis={props.fetchInstanceAnalysis}
+            fetching={props.perspectiveState.fetching}
+            fetchingInstanceAnalysisData={props.perspectiveState.fetchingInstanceAnalysisData}
+            layerType='arcLayer'
+            mapBoxAccessToken={MAPBOX_ACCESS_TOKEN}
+            mapBoxStyle={MAPBOX_STYLE}
+            layoutConfig={props.layoutConfig}
+          />}
+      />
       <Route
         path={`${rootUrl}/${perspective.id}/faceted-search/production_dates`}
         render={() =>
diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js
index fa85bf429aacd5578089153b5accfbd328e25420..ca8acdb532f216d79a1852900129474fb455d102 100644
--- a/src/server/sparql/Mappers.js
+++ b/src/server/sparql/Mappers.js
@@ -171,13 +171,14 @@ export const mapPieChart = sparqlBindings => {
 export const linearScale = ({ data, config }) => {
   const { variable, minAllowed, maxAllowed } = config
   const length = data.length
-  const min = data[length - 1][variable]
-  const max = data[0][variable]
+  const min = Number(data[length - 1][variable])
+  const max = Number(data[0][variable])
   data.forEach(item => {
     if (item[variable]) {
-      const unscaledNum = item[variable]
+      const unscaledNum = Number(item[variable])
       // https://stackoverflow.com/a/31687097
-      item[`${variable}Scaled`] = (maxAllowed - minAllowed) * (unscaledNum - min) / (max - min) + minAllowed
+      const scaled = (maxAllowed - minAllowed) * (unscaledNum - min) / (max - min) + minAllowed
+      item[`${variable}Scaled`] = scaled.toFixed(2)
     }
   })
   return data
diff --git a/src/server/sparql/sampo/BackendSearchConfig.js b/src/server/sparql/sampo/BackendSearchConfig.js
index b06f3827bcf9683c5a7445a3476e4a84b4e7f2a6..749d7a2499e7a0273bace5bb7cbd35bd381d40a1 100644
--- a/src/server/sparql/sampo/BackendSearchConfig.js
+++ b/src/server/sparql/sampo/BackendSearchConfig.js
@@ -5,6 +5,7 @@ import { findsConfig } from './perspective_configs/FindsConfig'
 import { actorsConfig } from './perspective_configs/EmloActorsConfig'
 import { hellerauConfig } from './perspective_configs/HellerauConfig'
 import { speechesConfig } from './perspective_configs/SemparlSpeechesConfig'
+import { warsaConfig } from './perspective_configs/WarsaConfig'
 import {
   productionPlacesQuery,
   lastKnownLocationsQuery,
@@ -19,7 +20,8 @@ import {
   manuscriptInstancePageNetworkLinksQuery,
   manuscriptFacetResultsNetworkLinksQuery,
   manuscriptNetworkNodesQuery,
-  knowledgeGraphMetadataQuery
+  knowledgeGraphMetadataQuery,
+  choroplethQuery
 } from './sparql_queries/SparqlQueriesPerspective1'
 import {
   workProperties
@@ -75,6 +77,7 @@ export const backendSearchConfig = {
   emloActors: actorsConfig,
   hellerau: hellerauConfig,
   semparlSpeeches: speechesConfig,
+  warsa: warsaConfig,
   manuscripts: {
     perspectiveID: 'perspective1', // get rest of the config from 'perspective1'
     instance: {
@@ -166,6 +169,19 @@ export const backendSearchConfig = {
       }
     }
   },
+  choropleth: {
+    perspectiveID: 'warsa',
+    q: choroplethQuery,
+    resultMapper: makeObjectList,
+    postprocess: {
+      func: linearScale,
+      config: {
+        variable: 'instanceCount',
+        minAllowed: 0,
+        maxAllowed: 1
+      }
+    }
+  },
   placesMsMigrationsDialog: {
     perspectiveID: 'perspective1',
     q: migrationsDialogQuery,
diff --git a/src/server/sparql/sampo/perspective_configs/WarsaConfig.js b/src/server/sparql/sampo/perspective_configs/WarsaConfig.js
new file mode 100644
index 0000000000000000000000000000000000000000..18de616e8e0f96c087f615af9507863705ea0c3c
--- /dev/null
+++ b/src/server/sparql/sampo/perspective_configs/WarsaConfig.js
@@ -0,0 +1,9 @@
+import { prefixes } from '../sparql_queries/SparqlQueriesPrefixes'
+
+export const warsaConfig = {
+  endpoint: {
+    url: 'http://ldf.fi/warsa/sparql',
+    prefixes,
+    useAuth: false
+  }
+}
diff --git a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js
index eaf66a7a6f40ae3b42aed0bf397bcb9cf9ddfe62..213da13a9f17e18b962774ddf651f5094dc2b0f8 100644
--- a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js
+++ b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js
@@ -596,3 +596,16 @@ export const knowledgeGraphMetadataQuery = `
                       dct:modified ?databaseDump__modified .
   }
 `
+
+export const choroplethQuery = `
+  SELECT ?id ?prefLabel ?polygon (count(?death) as ?instanceCount) 
+  WHERE {
+    ?id a <http://www.yso.fi/onto/suo/kunta> ;
+        skos:prefLabel ?prefLabel .
+        # sch:polygon ?polygon 
+    ?death crm-org:P7_took_place_at ?id .
+  }
+  GROUP BY ?id ?prefLabel ?polygon
+  ORDER BY desc(?instanceCount)
+  LIMIT 10
+`
diff --git a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js
index e3692a82e7d07263673f3b4b781a2feebf5661d6..0f9cab5e064e22831eff3af536509d62c2092554 100644
--- a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js
+++ b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPrefixes.js
@@ -3,6 +3,7 @@ export const prefixes = `
   PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
   PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
   PREFIX crm: <http://erlangen-crm.org/current/>
+  PREFIX crm-org: <http://www.cidoc-crm.org/cidoc-crm/>
   PREFIX owl: <http://www.w3.org/2002/07/owl#>
   PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
   PREFIX text: <http://jena.apache.org/text#>