Extension:Graph/Demo/Sparql/Number of museums per country


<graph mode=interactive>

{
  "version": 2,
  "width": 500,
  "height": 260,
  "padding": 12,
  "background": "#edf1f7",
  "data": [
    {
      "name": "countryNames",
      "url": "wikidatasparql:///?query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%0APREFIX%20wd%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fentity%2F%3E%20%0APREFIX%20wdt%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%0A%0ASELECT%20%3Fid%20%3Fvalue%20WHERE%20%7B%0A%20%20%20%7B%20SELECT%20DISTINCT%20%3Fid%20%20WHERE%20%7B%0A%20%20%20%20%20%3Fplace%20wdt%3AP17%20%3Fid%20.%0A%20%20%20%7D%20%7D%0A%20%20%20%3Fid%20wdt%3AP299%20%3Fcode%20.%0A%20%20%20SERVICE%20wikibase%3Alabel%20%7B%0A%20%20%20%20%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%2Cen%22%20.%0A%20%20%20%20%20%3Fid%20rdfs%3Alabel%20%3Fvalue%0A%20%20%20%7D%0A%7D%0A",
      "format": { "type": "json" }
    },
    {
      "name": "countryPopulation",
      "url": "wikidatasparql:///?query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%0APREFIX%20wd%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fentity%2F%3E%20%0APREFIX%20wdt%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%0A%0ASELECT%20%3Fid%20%3Fvalue%20WHERE%20%7B%0A%20%20%20%7B%20SELECT%20DISTINCT%20%3Fid%20%20WHERE%20%7B%0A%20%20%20%20%20%3Fplace%20wdt%3AP17%20%3Fid%20.%0A%20%20%20%7D%20%7D%0A%20%20%20%3Fid%20wdt%3AP299%20%3Fcode%20.%0A%20%20%20%3Fid%20wdt%3AP1082%20%3Fvalue%20.%0A%7D%0A",
      "format": { "type": "json" }
    },
    {
      "name": "museumCounts",
      "url":"wikidatasparql:///?query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%0APREFIX%20wd%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fentity%2F%3E%20%0APREFIX%20wdt%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%0A%0ASELECT%20DISTINCT%20%3Fid%20(count(*)%20as%20%3Fvalue)%20WHERE%20%7B%0A%20%20%20%3Fplace%20wdt%3AP31%2Fwdt%3AP279*%20wd%3AQ33506%20.%0A%20%20%20%3Fplace%20wdt%3AP17%20%3Fid%20.%0A%7D%0A%0AGROUP%20BY%20%3Fid",
      "format": { "type": "json" }
    },
    {
      "name": "map",
      "url": "wikiraw:///Extension:Graph/Demo/RawData:WorldMap-json",
      "format": {"type": "topojson","feature": "countries"},
      "transform": [
        {
          "type": "geopath",
          "value": "data",
          "scale": 80,
          "center": [-180,125],
          "translate": [0,0],
          "projection": "equirectangular"
        },
        {
          "type": "lookup",
          "keys": ["id"],
          "on": "countryNames",
          "onKey": "id",
          "as": ["name"],
          "default": {"value": {"value": "???"} }
        },
        { "type": "formula", "field": "name", "expr": "datum.name.value" },
        {
          "type": "lookup",
          "keys": ["id"],
          "on": "countryPopulation",
          "onKey": "id",
          "as": ["population"],
          "default": {"value": {"value": 0} }
        },
        { "type": "formula", "field": "population", "expr": "datum.population.value" },
        {
          "type": "lookup",
          "keys": ["id"],
          "on": "museumCounts",
          "onKey": "id",
          "as": ["museums"],
          "default": {"value": {"value": 0} }
        },
        { "type": "formula", "field": "museums", "expr": "datum.museums.value" },
        {
          "type": "formula",
          "field": "rate",
          "expr": "datum.population > 0 && datum.museums > 0 ? (datum.museums / datum.population) : 0.000000001"
        }
      ]
    }
  ],
  "signals": [
    {
      "name": "tooltipSignal",
      "init": {"expr": "{x: 0, y: 0, datum: {name:'', population:'', museums:''} }"}, 
      "streams": [
        {  
          "type": "@map:mouseover",    
          "expr": "{x: eventX(), y: eventY(), datum: eventItem().datum}"
        },
        {  
          "type": "@map:mouseout",
          "expr": "{x: 0, y: 0, datum: {name:'', population:'', museums:''} }"
        }
      ] 
    }
  ],
  "scales": [
    {
      "name": "color",
      "type": "log",
      "domain": {"data": "map","field": "rate"},
      "zero": false,
      "range":  ["#FFEDBC", "#f83600"]
    }
  ],
  "marks": [
    {
      "type": "text",
      "properties": {
        "enter": {
          "text": {"value": "Museums"},
          "x": {"value": 0},
          "y": {"value": 25},
          "fontSize": {"value": 32},
          "fontWeight": {"value": "bold"},
          "fill": {"value": "steelblue"}
        }
      }
    },
    {
      "name": "map",
      "type": "path",
      "from": {"data": "map"},
      "properties": {
        "enter": {"path": {"field": "layout_path"} },
        "update": {
          "fill": [
            {
              "test": "datum.rate !== null",
              "scale": "color",
              "field": "rate"
            },
            {"value": "grey"}
          ]
        },
        "hover": {"fill": {"value": "#989898"} }
      }
    },
    {
      "type": "text",
      "properties": {
        "enter": {
          "x": {"value": 500},
          "y": {"value": 10},
          "align": {"value": "right"},
          "fontSize": {"value": 17},
          "fill": {"value": "black"}
        },
        "update": {
          "text": {"template": "\u007b{tooltipSignal.datum.name}\u007d \u007b{tooltipSignal.datum.museums}\u007d"}
        }
      }
    }
  ],
  "legends": [
    {
      "fill": "color",
      "title": "Per Capita",
      "offset": -300,
       "properties": {
       "labels": {
         "text": {"value": ""}
        },
        "gradient": {
          "stroke": {"value": "transparent"}
        },
        "title": {
          "fontSize": {"value": 14}
        },
        "legend": {
          "x": {"value": 0},
          "y": {"value": 180}
        }
      }
    }
  ]
}

</graph>