Applied Metaphors: Learning TRIZ, Complexity, Data/Stats/ML using Metaphors
  1. Maps
  • Teaching
    • Data Analytics for Managers and Creators
      • Tools
        • Introduction to R and RStudio
        • Introduction to Radiant
        • Introduction to Orange
      • Descriptive Analytics
        • Data
        • Summaries
        • Counts
        • Quantities
        • Groups
        • Densities
        • Groups and Densities
        • Change
        • Proportions
        • Parts of a Whole
        • Evolution and Flow
        • Ratings and Rankings
        • Surveys
        • Time
        • Space
        • Networks
        • Experiments
        • Miscellaneous Graphing Tools, and References
      • Statistical Inference
        • 🧭 Basics of Statistical Inference
        • 🎲 Samples, Populations, Statistics and Inference
        • Basics of Randomization Tests
        • 🃏 Inference for a Single Mean
        • 🃏 Inference for Two Independent Means
        • 🃏 Inference for Comparing Two Paired Means
        • Comparing Multiple Means with ANOVA
        • Inference for Correlation
        • 🃏 Testing a Single Proportion
        • 🃏 Inference Test for Two Proportions
      • Inferential Modelling
        • Modelling with Linear Regression
        • Modelling with Logistic Regression
        • 🕔 Modelling and Predicting Time Series
      • Predictive Modelling
        • 🐉 Intro to Orange
        • ML - Regression
        • ML - Classification
        • ML - Clustering
      • Prescriptive Modelling
        • 📐 Intro to Linear Programming
        • 💭 The Simplex Method - Intuitively
        • 📅 The Simplex Method - In Excel
      • Workflow
        • Facing the Abyss
        • I Publish, therefore I Am
      • Case Studies
        • Demo:Product Packaging and Elderly People
        • Ikea Furniture
        • Movie Profits
        • Gender at the Work Place
        • Heptathlon
        • School Scores
        • Children's Games
        • Valentine’s Day Spending
        • Women Live Longer?
        • Hearing Loss in Children
        • California Transit Payments
        • Seaweed Nutrients
        • Coffee Flavours
        • Legionnaire’s Disease in the USA
        • Antarctic Sea ice
        • William Farr's Observations on Cholera in London
    • R for Artists and Managers
      • 🕶 Lab-1: Science, Human Experience, Experiments, and Data
      • Lab-2: Down the R-abbit Hole…
      • Lab-3: Drink Me!
      • Lab-4: I say what I mean and I mean what I say
      • Lab-5: Twas brillig, and the slithy toves…
      • Lab-6: These Roses have been Painted !!
      • Lab-7: The Lobster Quadrille
      • Lab-8: Did you ever see such a thing as a drawing of a muchness?
      • Lab-9: If you please sir…which way to the Secret Garden?
      • Lab-10: An Invitation from the Queen…to play Croquet
      • Lab-11: The Queen of Hearts, She Made some Tarts
      • Lab-12: Time is a Him!!
      • Iteration: Learning to purrr
      • Lab-13: Old Tortoise Taught Us
      • Lab-14: You’re are Nothing but a Pack of Cards!!
    • ML for Artists and Managers
      • 🐉 Intro to Orange
      • ML - Regression
      • ML - Classification
      • ML - Clustering
      • 🕔 Modelling Time Series
    • TRIZ for Problem Solvers
      • I am Water
      • I am What I yam
      • Birds of Different Feathers
      • I Connect therefore I am
      • I Think, Therefore I am
      • The Art of Parallel Thinking
      • A Year of Metaphoric Thinking
      • TRIZ - Problems and Contradictions
      • TRIZ - The Unreasonable Effectiveness of Available Resources
      • TRIZ - The Ideal Final Result
      • TRIZ - A Contradictory Language
      • TRIZ - The Contradiction Matrix Workflow
      • TRIZ - The Laws of Evolution
      • TRIZ - Substance Field Analysis, and ARIZ
    • Math Models for Creative Coders
      • Maths Basics
        • Vectors
        • Matrix Algebra Whirlwind Tour
        • content/courses/MathModelsDesign/Modules/05-Maths/70-MultiDimensionGeometry/index.qmd
      • Tech
        • Tools and Installation
        • Adding Libraries to p5.js
        • Using Constructor Objects in p5.js
      • Geometry
        • Circles
        • Complex Numbers
        • Fractals
        • Affine Transformation Fractals
        • L-Systems
        • Kolams and Lusona
      • Media
        • Fourier Series
        • Additive Sound Synthesis
        • Making Noise Predictably
        • The Karplus-Strong Guitar Algorithm
      • AI
        • Working with Neural Nets
        • The Perceptron
        • The Multilayer Perceptron
        • MLPs and Backpropagation
        • Gradient Descent
      • Projects
        • Projects
    • Data Science with No Code
      • Data
      • Orange
      • Summaries
      • Counts
      • Quantity
      • 🕶 Happy Data are all Alike
      • Groups
      • Change
      • Rhythm
      • Proportions
      • Flow
      • Structure
      • Ranking
      • Space
      • Time
      • Networks
      • Surveys
      • Experiments
    • Tech for Creative Education
      • 🧭 Using Idyll
      • 🧭 Using Apparatus
      • 🧭 Using g9.js
    • Literary Jukebox: In Short, the World
      • Italy - Dino Buzzati
      • France - Guy de Maupassant
      • Japan - Hisaye Yamamoto
      • Peru - Ventura Garcia Calderon
      • Russia - Maxim Gorky
      • Egypt - Alifa Rifaat
      • Brazil - Clarice Lispector
      • England - V S Pritchett
      • Russia - Ivan Bunin
      • Czechia - Milan Kundera
      • Sweden - Lars Gustaffsson
      • Canada - John Cheever
      • Ireland - William Trevor
      • USA - Raymond Carver
      • Italy - Primo Levi
      • India - Ruth Prawer Jhabvala
      • USA - Carson McCullers
      • Zimbabwe - Petina Gappah
      • India - Bharati Mukherjee
      • USA - Lucia Berlin
      • USA - Grace Paley
      • England - Angela Carter
      • USA - Kurt Vonnegut
      • Spain-Merce Rodoreda
      • Israel - Ruth Calderon
      • Israel - Etgar Keret
  • Posts
  • Blogs and Talks

On this page

  • Defining a bounding box
  • Inspecting OSM data
  • Plotting Base Maps with ggplot/ggformula
  • Plotting with tmap
  • Adding User Data to a Base Map

Maps

library(tidyverse)
library(sf)
library(tmap)
library(osmdata)
library(ggformula)

Defining a bounding box

bbox_2 <- osmdata::getbb("Jayanagar, Bangalore, India")
bbox_2
       min      max
x 77.58034 77.58507
y 12.93683 12.94356
locations <-
  osmdata::opq(bbox = bbox_2) %>%
  osmdata::add_osm_feature(
    key = "amenity",
    value = c("restaurant", "atm", "college")
  ) %>%
  osmdata_sf() %>% # Convert to Simple Features format
  purrr::pluck("osm_points") # Pull out the data frame of interest
###
dat_buildings <-
  osmdata::opq(bbox = bbox_2) %>%
  osmdata::add_osm_feature(key = "building") %>%
  osmdata_sf() %>%
  purrr::pluck("osm_polygons")

Inspecting OSM data

str(locations)
Classes 'sf' and 'data.frame':  37 obs. of  22 variables:
 $ osm_id            : chr  "493493804" "493493806" "493493810" "1217571540" ...
 $ name              : chr  NA NA NA NA ...
 $ amenity           : chr  NA NA NA NA ...
 $ brand             : chr  NA NA NA NA ...
 $ brand:en          : chr  NA NA NA NA ...
 $ brand:hi          : chr  NA NA NA NA ...
 $ brand:kn          : chr  NA NA NA NA ...
 $ brand:pa          : chr  NA NA NA NA ...
 $ brand:pnb         : chr  NA NA NA NA ...
 $ brand:ur          : chr  NA NA NA NA ...
 $ brand:wikidata    : chr  NA NA NA NA ...
 $ brand:wikipedia   : chr  NA NA NA NA ...
 $ brand:wikipedia:pa: chr  NA NA NA NA ...
 $ name:en           : chr  NA NA NA NA ...
 $ name:hi           : chr  NA NA NA NA ...
 $ name:kn           : chr  NA NA NA NA ...
 $ name:pa           : chr  NA NA NA NA ...
 $ name:pnb          : chr  NA NA NA NA ...
 $ name:ur           : chr  NA NA NA NA ...
 $ operator          : chr  NA NA NA NA ...
 $ operator:wikidata : chr  NA NA NA NA ...
 $ geometry          :sfc_POINT of length 37; first list element:  'XY' num  77.6 12.9
 - attr(*, "sf_column")= chr "geometry"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "names")= chr [1:21] "osm_id" "name" "amenity" "brand" ...
str(dat_buildings)
Classes 'sf' and 'data.frame':  733 obs. of  26 variables:
 $ osm_id          : chr  "105734855" "105734857" "105734859" "130863019" ...
 $ name            : chr  NA NA NA "BBMP Complex (Jayanagar 2nd Block)" ...
 $ addr:city       : chr  NA NA NA NA ...
 $ addr:housenumber: chr  NA NA NA NA ...
 $ addr:postcode   : chr  NA NA NA NA ...
 $ addr:street     : chr  NA NA NA NA ...
 $ alt_name        : chr  NA NA NA NA ...
 $ amenity         : chr  NA NA NA "public_building" ...
 $ atm             : chr  NA NA NA NA ...
 $ brand           : chr  NA NA NA NA ...
 $ brand:wikidata  : chr  NA NA NA NA ...
 $ brand:wikipedia : chr  NA NA NA NA ...
 $ building        : chr  NA "yes" "yes" "yes" ...
 $ building:levels : chr  NA NA NA NA ...
 $ level           : chr  NA NA NA NA ...
 $ lit             : chr  NA NA NA NA ...
 $ name:en         : chr  NA NA NA NA ...
 $ name:kn         : chr  NA NA NA "ಬಿಬಿಎಂಪಿ ಸಂಕೀರ್ಣ" ...
 $ office          : chr  NA NA NA NA ...
 $ opening_hours   : chr  NA NA NA NA ...
 $ operator        : chr  NA NA NA NA ...
 $ phone           : chr  NA NA NA NA ...
 $ shop            : chr  NA NA NA NA ...
 $ smoking         : chr  NA NA NA NA ...
 $ website         : chr  NA NA NA NA ...
 $ geometry        :sfc_POLYGON of length 733; first list element: List of 1
  ..$ : num [1:14, 1:2] 77.6 77.6 77.6 77.6 77.6 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:14] "1217571544" "1217571540" "493493806" "1217571541" ...
  .. .. ..$ : chr [1:2] "lon" "lat"
  ..- attr(*, "class")= chr [1:3] "XY" "POLYGON" "sfg"
 - attr(*, "sf_column")= chr "geometry"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "names")= chr [1:25] "osm_id" "name" "addr:city" "addr:housenumber" ...

Plotting Base Maps with ggplot/ggformula

ggplot() +
  geom_sf(data = locations, fill = "gold", color = "grey", linewidth = 0.025) +
  geom_sf(data = dat_buildings, fill = "purple") +
  coord_sf()

gf_sf(geometry = ~geometry, data = locations) %>%
  gf_sf(geometry = ~geometry, dat = dat_buildings)

Plotting with tmap

tm_shape(locations) +
  tm_dots(size = 0.5) +
  tm_shape(dat_buildings) +
  tm_polygons() +
  tm_compass(position = c("right", "top"))

Adding User Data to a Base Map

Back to top

License: CC BY-SA 2.0

Website made with ❤️ and Quarto, by Arvind V.

Hosted by Netlify .